[rtems-libbsd commit] Use <sys/poll.h> and <sys/event.h> from RTEMS

Sebastian Huber sebh at rtems.org
Mon Nov 4 14:22:24 UTC 2013


Module:    rtems-libbsd
Branch:    master
Commit:    fdf46bea28379eaa4ac20b1dde4e144b2fbfd312
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=fdf46bea28379eaa4ac20b1dde4e144b2fbfd312

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Oct 31 16:07:55 2013 +0100

Use <sys/poll.h> and <sys/event.h> from RTEMS

---

 freebsd-to-rtems.py     |    2 -
 freebsd/sys/sys/event.h |  279 -----------------------------------------------
 freebsd/sys/sys/poll.h  |  104 ------------------
 3 files changed, 0 insertions(+), 385 deletions(-)

diff --git a/freebsd-to-rtems.py b/freebsd-to-rtems.py
index ee69015..53a05ce 100755
--- a/freebsd-to-rtems.py
+++ b/freebsd-to-rtems.py
@@ -684,7 +684,6 @@ base.addHeaderFiles(
 		'sys/sys/ctype.h',
 		'sys/sys/domain.h',
 		'sys/sys/endian.h',
-		'sys/sys/event.h',
 		'sys/sys/eventhandler.h',
 		'sys/sys/filedesc.h',
 		'sys/sys/file.h',
@@ -716,7 +715,6 @@ base.addHeaderFiles(
 		'sys/sys/_null.h',
 		'sys/sys/osd.h',
 		'sys/sys/pcpu.h',
-		'sys/sys/poll.h',
 		'sys/sys/priority.h',
 		'sys/sys/priv.h',
 		'sys/sys/proc.h',
diff --git a/freebsd/sys/sys/event.h b/freebsd/sys/sys/event.h
deleted file mode 100644
index d92eb55..0000000
--- a/freebsd/sys/sys/event.h
+++ /dev/null
@@ -1,279 +0,0 @@
-/*-
- * Copyright (c) 1999,2000,2001 Jonathan Lemon <jlemon at FreeBSD.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _SYS_EVENT_H_
-#define _SYS_EVENT_H_
-
-#include <sys/queue.h> 
-
-#define EVFILT_READ		(-1)
-#define EVFILT_WRITE		(-2)
-#define EVFILT_AIO		(-3)	/* attached to aio requests */
-#define EVFILT_VNODE		(-4)	/* attached to vnodes */
-#define EVFILT_PROC		(-5)	/* attached to struct proc */
-#define EVFILT_SIGNAL		(-6)	/* attached to struct proc */
-#define EVFILT_TIMER		(-7)	/* timers */
-/*	EVFILT_NETDEV		(-8)	   no longer supported */
-#define EVFILT_FS		(-9)	/* filesystem events */
-#define EVFILT_LIO		(-10)	/* attached to lio requests */
-#define EVFILT_USER		(-11)	/* User events */
-#define EVFILT_SYSCOUNT		11
-
-#define EV_SET(kevp_, a, b, c, d, e, f) do {	\
-	struct kevent *kevp = (kevp_);		\
-	(kevp)->ident = (a);			\
-	(kevp)->filter = (b);			\
-	(kevp)->flags = (c);			\
-	(kevp)->fflags = (d);			\
-	(kevp)->data = (e);			\
-	(kevp)->udata = (f);			\
-} while(0)
-
-struct kevent {
-	uintptr_t	ident;		/* identifier for this event */
-	short		filter;		/* filter for event */
-	u_short		flags;
-	u_int		fflags;
-	intptr_t	data;
-	void		*udata;		/* opaque user data identifier */
-};
-
-/* actions */
-#define EV_ADD		0x0001		/* add event to kq (implies enable) */
-#define EV_DELETE	0x0002		/* delete event from kq */
-#define EV_ENABLE	0x0004		/* enable event */
-#define EV_DISABLE	0x0008		/* disable event (not reported) */
-
-/* flags */
-#define EV_ONESHOT	0x0010		/* only report one occurrence */
-#define EV_CLEAR	0x0020		/* clear event state after reporting */
-#define EV_RECEIPT	0x0040		/* force EV_ERROR on success, data=0 */
-#define EV_DISPATCH	0x0080		/* disable event after reporting */
-
-#define EV_SYSFLAGS	0xF000		/* reserved by system */
-#define EV_FLAG1	0x2000		/* filter-specific flag */
-
-/* returned values */
-#define EV_EOF		0x8000		/* EOF detected */
-#define EV_ERROR	0x4000		/* error, data contains errno */
-
- /*
-  * data/hint flags/masks for EVFILT_USER, shared with userspace
-  *
-  * On input, the top two bits of fflags specifies how the lower twenty four
-  * bits should be applied to the stored value of fflags.
-  *
-  * On output, the top two bits will always be set to NOTE_FFNOP and the
-  * remaining twenty four bits will contain the stored fflags value.
-  */
-#define NOTE_FFNOP	0x00000000		/* ignore input fflags */
-#define NOTE_FFAND	0x40000000		/* AND fflags */
-#define NOTE_FFOR	0x80000000		/* OR fflags */
-#define NOTE_FFCOPY	0xc0000000		/* copy fflags */
-#define NOTE_FFCTRLMASK	0xc0000000		/* masks for operations */
-#define NOTE_FFLAGSMASK	0x00ffffff
-
-#define NOTE_TRIGGER	0x01000000		/* Cause the event to be
-						   triggered for output. */
-
-/*
- * data/hint flags for EVFILT_{READ|WRITE}, shared with userspace
- */
-#define NOTE_LOWAT	0x0001			/* low water mark */
-
-/*
- * data/hint flags for EVFILT_VNODE, shared with userspace
- */
-#define	NOTE_DELETE	0x0001			/* vnode was removed */
-#define	NOTE_WRITE	0x0002			/* data contents changed */
-#define	NOTE_EXTEND	0x0004			/* size increased */
-#define	NOTE_ATTRIB	0x0008			/* attributes changed */
-#define	NOTE_LINK	0x0010			/* link count changed */
-#define	NOTE_RENAME	0x0020			/* vnode was renamed */
-#define	NOTE_REVOKE	0x0040			/* vnode access was revoked */
-
-/*
- * data/hint flags for EVFILT_PROC, shared with userspace
- */
-#define	NOTE_EXIT	0x80000000		/* process exited */
-#define	NOTE_FORK	0x40000000		/* process forked */
-#define	NOTE_EXEC	0x20000000		/* process exec'd */
-#define	NOTE_PCTRLMASK	0xf0000000		/* mask for hint bits */
-#define	NOTE_PDATAMASK	0x000fffff		/* mask for pid */
-
-/* additional flags for EVFILT_PROC */
-#define	NOTE_TRACK	0x00000001		/* follow across forks */
-#define	NOTE_TRACKERR	0x00000002		/* could not track child */
-#define	NOTE_CHILD	0x00000004		/* am a child process */
-
-struct knote;
-SLIST_HEAD(klist, knote);
-struct kqueue;
-SLIST_HEAD(kqlist, kqueue);
-struct knlist {
-	struct	klist	kl_list;
-	void    (*kl_lock)(void *);	/* lock function */
-	void    (*kl_unlock)(void *);
-	void	(*kl_assert_locked)(void *);
-	void	(*kl_assert_unlocked)(void *);
-	void *kl_lockarg;		/* argument passed to kl_lockf() */
-};
-
-
-#ifdef _KERNEL
-
-#ifdef MALLOC_DECLARE
-MALLOC_DECLARE(M_KQUEUE);
-#endif
-
-/*
- * Flags for knote call
- */
-#define	KNF_LISTLOCKED	0x0001			/* knlist is locked */
-#define	KNF_NOKQLOCK	0x0002			/* do not keep KQ_LOCK */
-
-#define KNOTE(list, hist, flags)	knote(list, hist, flags)
-#define KNOTE_LOCKED(list, hint)	knote(list, hint, KNF_LISTLOCKED)
-#define KNOTE_UNLOCKED(list, hint)	knote(list, hint, 0)
-
-#define	KNLIST_EMPTY(list)		SLIST_EMPTY(&(list)->kl_list)
-
-/*
- * Flag indicating hint is a signal.  Used by EVFILT_SIGNAL, and also
- * shared by EVFILT_PROC  (all knotes attached to p->p_klist)
- */
-#define NOTE_SIGNAL	0x08000000
-
-/*
- * Hint values for the optional f_touch event filter.  If f_touch is not set 
- * to NULL and f_isfd is zero the f_touch filter will be called with the type
- * argument set to EVENT_REGISTER during a kevent() system call.  It is also
- * called under the same conditions with the type argument set to EVENT_PROCESS
- * when the event has been triggered.
- */
-#define EVENT_REGISTER	1
-#define EVENT_PROCESS	2
-
-struct filterops {
-	int	f_isfd;		/* true if ident == filedescriptor */
-	int	(*f_attach)(struct knote *kn);
-	void	(*f_detach)(struct knote *kn);
-	int	(*f_event)(struct knote *kn, long hint);
-	void	(*f_touch)(struct knote *kn, struct kevent *kev, u_long type);
-};
-
-/*
- * Setting the KN_INFLUX flag enables you to unlock the kq that this knote
- * is on, and modify kn_status as if you had the KQ lock.
- *
- * kn_sfflags, kn_sdata, and kn_kevent are protected by the knlist lock.
- */
-struct knote {
-	SLIST_ENTRY(knote)	kn_link;	/* for kq */
-	SLIST_ENTRY(knote)	kn_selnext;	/* for struct selinfo */
-	struct			knlist *kn_knlist;	/* f_attach populated */
-	TAILQ_ENTRY(knote)	kn_tqe;
-	struct			kqueue *kn_kq;	/* which queue we are on */
-	struct 			kevent kn_kevent;
-	int			kn_status;	/* protected by kq lock */
-#define KN_ACTIVE	0x01			/* event has been triggered */
-#define KN_QUEUED	0x02			/* event is on queue */
-#define KN_DISABLED	0x04			/* event is disabled */
-#define KN_DETACHED	0x08			/* knote is detached */
-#define KN_INFLUX	0x10			/* knote is in flux */
-#define KN_MARKER	0x20			/* ignore this knote */
-#define KN_KQUEUE	0x40			/* this knote belongs to a kq */
-#define KN_HASKQLOCK	0x80			/* for _inevent */
-	int			kn_sfflags;	/* saved filter flags */
-	intptr_t		kn_sdata;	/* saved data field */
-	union {
-		struct		file *p_fp;	/* file data pointer */
-		struct		proc *p_proc;	/* proc pointer */
-		struct		aiocblist *p_aio;	/* AIO job pointer */
-		struct		aioliojob *p_lio;	/* LIO job pointer */ 
-	} kn_ptr;
-	struct			filterops *kn_fop;
-	void			*kn_hook;
-	int			kn_hookid;
-
-#define kn_id		kn_kevent.ident
-#define kn_filter	kn_kevent.filter
-#define kn_flags	kn_kevent.flags
-#define kn_fflags	kn_kevent.fflags
-#define kn_data		kn_kevent.data
-#define kn_fp		kn_ptr.p_fp
-};
-struct kevent_copyops {
-	void	*arg;
-	int	(*k_copyout)(void *arg, struct kevent *kevp, int count);
-	int	(*k_copyin)(void *arg, struct kevent *kevp, int count);
-};
-
-struct thread;
-struct proc;
-struct knlist;
-struct mtx;
-
-extern void	knote(struct knlist *list, long hint, int lockflags);
-extern void	knote_fork(struct knlist *list, int pid);
-extern void	knlist_add(struct knlist *knl, struct knote *kn, int islocked);
-extern void	knlist_remove(struct knlist *knl, struct knote *kn, int islocked);
-extern void	knlist_remove_inevent(struct knlist *knl, struct knote *kn);
-extern int	knlist_empty(struct knlist *knl);
-extern void	knlist_init(struct knlist *knl, void *lock,
-    void (*kl_lock)(void *), void (*kl_unlock)(void *),
-    void (*kl_assert_locked)(void *), void (*kl_assert_unlocked)(void *));
-extern void	knlist_init_mtx(struct knlist *knl, struct mtx *lock);
-extern void	knlist_destroy(struct knlist *knl);
-extern void	knlist_cleardel(struct knlist *knl, struct thread *td,
-	int islocked, int killkn);
-#define knlist_clear(knl, islocked)				\
-		knlist_cleardel((knl), NULL, (islocked), 0)
-#define knlist_delete(knl, td, islocked)			\
-		knlist_cleardel((knl), (td), (islocked), 1)
-extern void	knote_fdclose(struct thread *p, int fd);
-extern int 	kqfd_register(int fd, struct kevent *kev, struct thread *p,
-		    int waitok);
-extern int	kqueue_add_filteropts(int filt, struct filterops *filtops);
-extern int	kqueue_del_filteropts(int filt);
-
-#else 	/* !_KERNEL */
-
-#include <sys/cdefs.h>
-struct timespec;
-
-__BEGIN_DECLS
-int     kqueue(void);
-int     kevent(int kq, const struct kevent *changelist, int nchanges,
-	    struct kevent *eventlist, int nevents,
-	    const struct timespec *timeout);
-__END_DECLS
-
-#endif /* !_KERNEL */
-
-#endif /* !_SYS_EVENT_H_ */
diff --git a/freebsd/sys/sys/poll.h b/freebsd/sys/sys/poll.h
deleted file mode 100644
index c955f32..0000000
--- a/freebsd/sys/sys/poll.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * Copyright (c) 1997 Peter Wemm <peter at freebsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _SYS_POLL_H_
-#define	_SYS_POLL_H_
-
-#include <sys/cdefs.h>
-
-/*
- * This file is intended to be compatible with the traditional poll.h.
- */
-
-typedef	unsigned int	nfds_t;
-
-/*
- * This structure is passed as an array to poll(2).
- */
-struct pollfd {
-	int	fd;		/* which file descriptor to poll */
-	short	events;		/* events we are interested in */
-	short	revents;	/* events found on return */
-};
-
-/*
- * Requestable events.  If poll(2) finds any of these set, they are
- * copied to revents on return.
- * XXX Note that FreeBSD doesn't make much distinction between POLLPRI
- * and POLLRDBAND since none of the file types have distinct priority
- * bands - and only some have an urgent "mode".
- * XXX Note POLLIN isn't really supported in true SVSV terms.  Under SYSV
- * POLLIN includes all of normal, band and urgent data.  Most poll handlers
- * on FreeBSD only treat it as "normal" data.
- */
-#define	POLLIN		0x0001		/* any readable data available */
-#define	POLLPRI		0x0002		/* OOB/Urgent readable data */
-#define	POLLOUT		0x0004		/* file descriptor is writeable */
-#define	POLLRDNORM	0x0040		/* non-OOB/URG data available */
-#define	POLLWRNORM	POLLOUT		/* no write type differentiation */
-#define	POLLRDBAND	0x0080		/* OOB/Urgent readable data */
-#define	POLLWRBAND	0x0100		/* OOB/Urgent data can be written */
-
-#if __BSD_VISIBLE
-/* General FreeBSD extension (currently only supported for sockets): */
-#define	POLLINIGNEOF	0x2000		/* like POLLIN, except ignore EOF */
-#endif
-
-/*
- * These events are set if they occur regardless of whether they were
- * requested.
- */
-#define	POLLERR		0x0008		/* some poll error occurred */
-#define	POLLHUP		0x0010		/* file descriptor was "hung up" */
-#define	POLLNVAL	0x0020		/* requested events "invalid" */
-
-#if __BSD_VISIBLE
-
-#define	POLLSTANDARD	(POLLIN|POLLPRI|POLLOUT|POLLRDNORM|POLLRDBAND|\
-			 POLLWRBAND|POLLERR|POLLHUP|POLLNVAL)
-
-/*
- * Request that poll() wait forever.
- * XXX in SYSV, this is defined in stropts.h, which is not included
- * by poll.h.
- */
-#define	INFTIM		(-1)
-
-#endif
-
-#ifndef _KERNEL
-
-__BEGIN_DECLS
-int	poll(struct pollfd _pfd[], nfds_t _nfds, int _timeout);
-__END_DECLS
-
-#endif /* !_KERNEL */
-
-#endif /* !_SYS_POLL_H_ */




More information about the vc mailing list