All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai] file descriptors rework
@ 2013-12-22 17:00 Gilles Chanteperdrix
  2013-12-23 15:29 ` Philippe Gerum
  0 siblings, 1 reply; 3+ messages in thread
From: Gilles Chanteperdrix @ 2013-12-22 17:00 UTC (permalink / raw)
  To: Xenomai


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.

-- 
                                                                Gilles.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-12-23 20:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-22 17:00 [Xenomai] file descriptors rework Gilles Chanteperdrix
2013-12-23 15:29 ` Philippe Gerum
2013-12-23 20:28   ` Gilles Chanteperdrix

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.