Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>  > Likely I did not yet get the full picture: What prevents using another
>  > adeos per-task key for this? 
> We would need a per-task key for every skin that needs a per-process
> data,

Not necessarily, we could attach a chain of per-skin data objects to the
key pointer.

> but more importantly, we would need to track the clone syscalls
> (that would be another adeos event) in order to propagate the per-task
> data to each thread of the process. Or maybe ptds are inherited upon
> clone ?

Ok, I see the problem, no hook to save here.

> And why is it required to establish a new
>  > termination hook? Are there scenarios where the existing
>  > task-termination hook is not suited for the planned cleanup work?
> Because the existing hook is called once for every thread exit, whereas
> the pexit event get triggered when the last thread of a process exits,
> this is the only moment we are sure we can destroy per-process data.
> Using the existing hook, we would need to decrement a reference counter
> in the hook, but then we would (again) need to track the clone syscalls
> in order to increment the reference counter.
> Both implementations require to add an adeos event, the one I chose, if
> it works, avoid reference counting.

My motivation for suggesting the keys were avoiding the
hash-table-lookup for mm structs. If we maintain some pointer on a
per-thread basis, we would only have to walk over all skins, not all
colliding elements in a hash chain.

I cannot show any code to compare both approaches w/ complexity and
efficiency. Maybe your approach is actually leaner, but my feeling is
that something based on per-task pointers might have advantages as well.

Moreover, having a clone hook may open further doors: establishing hooks
to clone shadow threads...


Attachment: signature.asc
Description: OpenPGP digital signature

Xenomai-core mailing list

Reply via email to