Dmitry Adamushko wrote:
>>> Then I stumbled over the xnintr structure. Why do you keep a copy of the
>>>> device name?
>>>> A "const char *" should be enough, we just have to demand
>>>> that it will remain valid as long as the xnintr structure itself (i.e.
>>>> during the IRQ being attached). Saves a few bytes. :)
>>> Could be if all the users of it are initially kernel-mode entities.
>>>
>>> But e.g. there is a version of rt_intr_create() that may be called by
>>> user-space
>>> apps and I extended it to support the "name" parameter too :
>>>
>>> int rt_intr_create(RT_INTR *intr, const char *name, unsigned irq, int
>> mode);
>>> In such a case, the kernel-side rt_intr_create() is called with the
>> "name"
>>> allocated on the stack in skins/native/syscall.c : __rt_intr_create())
>>> so the initial copy of the name can not remain valid.
>> But you could create buffer space for a copy of the name in the same
>> block already allocated for RT_INTR. Should be straightforward.
> 
> 
> RT_INTR does not have the "name" field any more. I have removed it after
> adding the same field to the xnintr_t as it became redundant.
> 
> To access the "name", any code in native skin does "intr->intr_base.name"
> (intr_base is of "xnintr_t" type).
> 

I was rather thinking of allocating RT_INTR + some additional space to
take the name passed from user-space. Then intr_base.name could point to
this buffer instead of static memory in the kernel use case.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to