From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <52B856F5.7090704@xenomai.org> Date: Mon, 23 Dec 2013 16:29:57 +0100 From: Philippe Gerum MIME-Version: 1.0 References: <52B71AB4.5090204@xenomai.org> In-Reply-To: <52B71AB4.5090204@xenomai.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai] file descriptors rework List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gilles Chanteperdrix , Xenomai On 12/22/2013 06:00 PM, Gilles Chanteperdrix wrote: > > Here is the new proposed API for file descriptors: > > struct xnfd_ops { > int (*destroy)(struct xnfd *fd); > int (*select_bind)(struct xnfd *fd, struct xnselector *selector, > unsigned type, unsigned index); > }; > > struct xnfd { > unsigned magic; > struct mm_struct *mm; > int ufd; > struct xnfd_ops *ops; > unsigned refs; > struct hlist_node hlink; /* Link in global hash */ > struct list_head link; /* Link in per-process queue */ > }; > > int xnfd_enter(struct xnfd *xnfd, unsigned magic, int ufd, > struct mm_struct *mm, struct xnfd_ops *ops); > > struct xnfd *xnfd_get(int ufd, struct mm_struct *mm, unsigned magic); > > int xnfd_put(struct xnfd *xnfd); > > int xnfd_close(struct xnfd *xnfd); > > The xnfd structure has to be put inside larger structure, and > container_of used to access the larger structure. The magic is there to > cope with the fact that different file descriptors users will have > different structures, so the actual type has to be found before using > container_of. > > refs is incrementer on get, decremented on put, when it reaches 0, the > "destroy" callback is called, this in order to avoid destroying a file > descriptor under another file descriptor user's feet. > > xnfd_close negates the magic in order to render the file descriptor invalid. > > the select_bind callbacks is needed to implement select uniformly. > > If nobody disagrees with this API, I will start implementing ASAP, and > rebase the message queues code upon this. > Looks fairly straightforward to me. AFAICT, there may be an opportunity to merge the xnselect features with a broader fd-oriented support. -- Philippe.