--- freebsd/sys/fs/devfs/devfs_int.h | 2 +- freebsd/sys/fs/devfs/devfs_vnops.c | 18 ++++++++--- freebsd/sys/kern/kern_conf.c | 16 ++++------ freebsd/sys/kern/subr_taskqueue.c | 10 ------ freebsd/sys/kern/tty.c | 62 ++++++++++++++++++++++++++++++++++++++ freebsd/sys/kern/tty_ttydisc.c | 2 ++ freebsd/sys/sys/conf.h | 2 ++ freebsd/sys/sys/file.h | 4 +++ freebsd/sys/sys/proc.h | 2 ++ 9 files changed, 93 insertions(+), 25 deletions(-)
diff --git a/freebsd/sys/fs/devfs/devfs_int.h b/freebsd/sys/fs/devfs/devfs_int.h index 670aba1..9e16b40 100644 --- a/freebsd/sys/fs/devfs/devfs_int.h +++ b/freebsd/sys/fs/devfs/devfs_int.h @@ -63,13 +63,13 @@ struct cdev_priv { u_int cdp_maxdirent; struct devfs_dirent **cdp_dirents; struct devfs_dirent *cdp_dirent0; +#endif /* __rtems__ */ TAILQ_ENTRY(cdev_priv) cdp_dtr_list; void (*cdp_dtr_cb)(void *); void *cdp_dtr_cb_arg; LIST_HEAD(, cdev_privdata) cdp_fdpriv; -#endif /* __rtems__ */ }; #define cdev2priv(c) __containerof(c, struct cdev_priv, cdp_c) diff --git a/freebsd/sys/fs/devfs/devfs_vnops.c b/freebsd/sys/fs/devfs/devfs_vnops.c index 39ad0d4..eca2da6 100644 --- a/freebsd/sys/fs/devfs/devfs_vnops.c +++ b/freebsd/sys/fs/devfs/devfs_vnops.c @@ -64,6 +64,7 @@ #include <sys/time.h> #include <sys/ttycom.h> #include <rtems/bsd/sys/unistd.h> +#ifndef __rtems__ #include <sys/vnode.h> static struct vop_vector devfs_vnodeops; @@ -71,23 +72,29 @@ static struct vop_vector devfs_specops; static struct fileops devfs_ops_f; #include <fs/devfs/devfs.h> +#endif /* __rtems__ */ #include <fs/devfs/devfs_int.h> +#ifndef __rtems__ #include <security/mac/mac_framework.h> #include <vm/vm.h> #include <vm/vm_extern.h> #include <vm/vm_object.h> +#endif /* __rtems__ */ static MALLOC_DEFINE(M_CDEVPDATA, "DEVFSP", "Metainfo for cdev-fp data"); +#ifndef __rtems__ struct mtx devfs_de_interlock; MTX_SYSINIT(devfs_de_interlock, &devfs_de_interlock, "devfs interlock", MTX_DEF); struct sx clone_drain_lock; SX_SYSINIT(clone_drain_lock, &clone_drain_lock, "clone events drain lock"); +#endif /* __rtems__ */ struct mtx cdevpriv_mtx; MTX_SYSINIT(cdevpriv_mtx, &cdevpriv_mtx, "cdevpriv lock", MTX_DEF); +#ifndef __rtems__ SYSCTL_DECL(_vfs_devfs); static int devfs_dotimes; @@ -132,6 +139,7 @@ devfs_fp_check(struct file *fp, struct cdev **devp, struct cdevsw **dswp, curthread->td_fpop = fp; return (0); } +#endif /* __rtems__ */ int devfs_get_cdevpriv(void **datap) @@ -220,6 +228,7 @@ devfs_clear_cdevpriv(void) devfs_fpdrop(fp); } +#ifndef __rtems__ /* * On success devfs_populate_vp() returns with dmp->dm_lock held. */ @@ -1929,3 +1938,4 @@ static struct vop_vector devfs_specops = { */ CTASSERT(O_NONBLOCK == IO_NDELAY); CTASSERT(O_FSYNC == IO_SYNC); +#endif /* __rtems__ */ diff --git a/freebsd/sys/kern/kern_conf.c b/freebsd/sys/kern/kern_conf.c index fb43c24..20f2e2c 100644 --- a/freebsd/sys/kern/kern_conf.c +++ b/freebsd/sys/kern/kern_conf.c @@ -59,11 +59,9 @@ static MALLOC_DEFINE(M_DEVT, "cdev", "cdev storage"); struct mtx devmtx; static void destroy_devl(struct cdev *dev); -#ifndef __rtems__ static int destroy_dev_sched_cbl(struct cdev *dev, void (*cb)(void *), void *arg); static void destroy_dev_tq(void *ctx, int pending); -#endif /* __rtems__ */ static int make_dev_credv(int flags, struct cdev **dres, struct cdevsw *devsw, int unit, struct ucred *cr, uid_t uid, gid_t gid, int mode, const char *fmt, va_list ap); @@ -164,7 +162,6 @@ dev_refl(struct cdev *dev) dev->si_refcount++; } -#ifndef __rtems__ void dev_rel(struct cdev *dev) { @@ -189,7 +186,6 @@ dev_rel(struct cdev *dev) if (flag) devfs_free(dev); } -#endif /* __rtems__ */ struct cdevsw * dev_refthread(struct cdev *dev, int *ref) @@ -971,6 +967,7 @@ make_dev_p(int flags, struct cdev **cdev, struct cdevsw *devsw, ("make_dev_p: failed make_dev_credv (error=%d)", res)); return (res); } +#endif /* __rtems__ */ static void dev_dependsl(struct cdev *pdev, struct cdev *cdev) @@ -1050,6 +1047,7 @@ make_dev_alias(struct cdev *pdev, const char *fmt, ...) return (dev); } +#ifndef __rtems__ int make_dev_alias_p(int flags, struct cdev **cdev, struct cdev *pdev, const char *fmt, ...) @@ -1156,7 +1154,6 @@ destroy_devl(struct cdev *dev) /* Remove name marking */ dev->si_flags &= ~SI_NAMED; -#ifndef __rtems__ /* If we are a child, remove us from the parents list */ if (dev->si_flags & SI_CHILD) { LIST_REMOVE(dev, si_siblings); @@ -1167,6 +1164,7 @@ destroy_devl(struct cdev *dev) while (!LIST_EMPTY(&dev->si_children)) destroy_devl(LIST_FIRST(&dev->si_children)); +#ifndef __rtems__ /* Remove from clone list */ if (dev->si_flags & SI_CLONELIST) { LIST_REMOVE(dev, si_clone); @@ -1195,14 +1193,12 @@ destroy_devl(struct cdev *dev) /* avoid out of order notify events */ notify_destroy(dev); } -#ifndef __rtems__ mtx_lock(&cdevpriv_mtx); while ((p = LIST_FIRST(&cdp->cdp_fdpriv)) != NULL) { devfs_destroy_cdevpriv(p); mtx_lock(&cdevpriv_mtx); } mtx_unlock(&cdevpriv_mtx); -#endif /* __rtems__ */ dev_lock(); dev->si_drv1 = 0; @@ -1231,7 +1227,6 @@ destroy_devl(struct cdev *dev) dev_free_devlocked(dev); } -#ifndef __rtems__ static void delist_dev_locked(struct cdev *dev) { @@ -1270,7 +1265,6 @@ delist_dev(struct cdev *dev) delist_dev_locked(dev); dev_unlock(); } -#endif /* __rtems__ */ void destroy_dev(struct cdev *dev) @@ -1282,7 +1276,6 @@ destroy_dev(struct cdev *dev) dev_unlock_and_free(); } -#ifndef __rtems__ const char * devtoname(struct cdev *dev) { @@ -1290,6 +1283,7 @@ devtoname(struct cdev *dev) return (dev->si_name); } +#ifndef __rtems__ int dev_stdclone(char *name, char **namep, const char *stem, int *unit) { @@ -1464,6 +1458,7 @@ clone_cleanup(struct clonedevs **cdp) free(cd, M_DEVBUF); *cdp = NULL; } +#endif /* __rtems__ */ static TAILQ_HEAD(, cdev_priv) dev_ddtr = TAILQ_HEAD_INITIALIZER(dev_ddtr); @@ -1536,6 +1531,7 @@ destroy_dev_sched(struct cdev *dev) return (destroy_dev_sched_cb(dev, NULL, NULL)); } +#ifndef __rtems__ void destroy_dev_drain(struct cdevsw *csw) { diff --git a/freebsd/sys/kern/subr_taskqueue.c b/freebsd/sys/kern/subr_taskqueue.c index c739ccf..c394869 100644 --- a/freebsd/sys/kern/subr_taskqueue.c +++ b/freebsd/sys/kern/subr_taskqueue.c @@ -49,15 +49,11 @@ __FBSDID("$FreeBSD$"); #include <machine/stdarg.h> static MALLOC_DEFINE(M_TASKQUEUE, "taskqueue", "Task Queues"); -#ifndef __rtems__ static void *taskqueue_giant_ih; -#endif /* __rtems__ */ static void *taskqueue_ih; static void taskqueue_fast_enqueue(void *); static void taskqueue_swi_enqueue(void *); -#ifndef __rtems__ static void taskqueue_swi_giant_enqueue(void *); -#endif /* __rtems__ */ struct taskqueue_busy { struct task *tb_running; @@ -182,9 +178,7 @@ _taskqueue_create(const char *name, int mflags, queue->tq_flags |= TQ_FLAGS_ACTIVE; if (enqueue == taskqueue_fast_enqueue || enqueue == taskqueue_swi_enqueue || -#ifndef __rtems__ enqueue == taskqueue_swi_giant_enqueue || -#endif /* __rtems__ */ enqueue == taskqueue_thread_enqueue) queue->tq_flags |= TQ_FLAGS_UNLOCKED_ENQUEUE; mtx_init(&queue->tq_mutex, tq_name, NULL, mtxflags); @@ -652,7 +646,6 @@ taskqueue_swi_run(void *dummy) taskqueue_run(taskqueue_swi); } -#ifndef __rtems__ static void taskqueue_swi_giant_enqueue(void *context) { @@ -664,7 +657,6 @@ taskqueue_swi_giant_run(void *dummy) { taskqueue_run(taskqueue_swi_giant); } -#endif /* __rtems__ */ static int _taskqueue_start_threads(struct taskqueue **tqp, int count, int pri, @@ -829,11 +821,9 @@ TASKQUEUE_DEFINE(swi, taskqueue_swi_enqueue, NULL, swi_add(NULL, "task queue", taskqueue_swi_run, NULL, SWI_TQ, INTR_MPSAFE, &taskqueue_ih)); -#ifndef __rtems__ TASKQUEUE_DEFINE(swi_giant, taskqueue_swi_giant_enqueue, NULL, swi_add(NULL, "Giant taskq", taskqueue_swi_giant_run, NULL, SWI_TQ_GIANT, 0, &taskqueue_giant_ih)); -#endif /* __rtems__ */ TASKQUEUE_DEFINE_THREAD(thread); diff --git a/freebsd/sys/kern/tty.c b/freebsd/sys/kern/tty.c index 95afaeb..5972e32 100644 --- a/freebsd/sys/kern/tty.c +++ b/freebsd/sys/kern/tty.c @@ -235,9 +235,11 @@ ttydev_leave(struct tty *tp) /* Stop asynchronous I/O. */ funsetown(&tp->t_sigio); +#ifndef __rtems__ /* Remove console TTY. */ if (constty == tp) constty_clear(); +#endif /* __rtems__ */ /* Drain any output. */ if (!tty_gone(tp)) @@ -388,9 +390,11 @@ ttydev_close(struct cdev *dev, int fflag, int devtype __unused, return (0); } +#ifndef __rtems__ /* If revoking, flush output now to avoid draining it later. */ if (fflag & FREVOKE) tty_flush(tp, FWRITE); +#endif /* __rtems__ */ tp->t_flags &= ~TF_EXCLUDE; @@ -405,6 +409,7 @@ ttydev_close(struct cdev *dev, int fflag, int devtype __unused, return (0); } +#ifndef __rtems__ static __inline int tty_is_ctty(struct tty *tp, struct proc *p) { @@ -413,10 +418,12 @@ tty_is_ctty(struct tty *tp, struct proc *p) return (p->p_session == tp->t_session && p->p_flag & P_CONTROLT); } +#endif /* __rtems__ */ int tty_wait_background(struct tty *tp, struct thread *td, int sig) { +#ifndef __rtems__ struct proc *p = td->td_proc; struct pgrp *pg; ksiginfo_t ksi; @@ -475,6 +482,9 @@ tty_wait_background(struct tty *tp, struct thread *td, int sig) if (error) return (error); } +#else /* __rtems__ */ + return (0); +#endif /* __rtems__ */ } static int @@ -779,7 +789,9 @@ static struct cdevsw ttydev_cdevsw = { .d_ioctl = ttydev_ioctl, .d_kqfilter = ttydev_kqfilter, .d_poll = ttydev_poll, +#ifndef __rtems__ .d_mmap = ttydev_mmap, +#endif /* __rtems__ */ .d_name = "ttydev", .d_flags = D_TTY, }; @@ -1189,6 +1201,7 @@ tty_rel_gone(struct tty *tp) * Exposing information about current TTY's through sysctl */ +#ifndef __rtems__ static void tty_to_xtty(struct tty *tp, struct xtty *xt) { @@ -1242,6 +1255,7 @@ sysctl_kern_ttys(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_kern, OID_AUTO, ttys, CTLTYPE_OPAQUE|CTLFLAG_RD|CTLFLAG_MPSAFE, 0, 0, sysctl_kern_ttys, "S,xtty", "List of TTYs"); +#endif /* __rtems__ */ /* * Device node creation. Device has been set up, now we can expose it to @@ -1270,6 +1284,7 @@ tty_makedevf(struct tty *tp, struct ucred *cred, int flags, vsnrprintf(name, sizeof name, 32, fmt, ap); va_end(ap); +#ifndef __rtems__ if (cred == NULL) { /* System device. */ uid = UID_ROOT; @@ -1281,6 +1296,11 @@ tty_makedevf(struct tty *tp, struct ucred *cred, int flags, gid = GID_TTY; mode = S_IRUSR|S_IWUSR|S_IWGRP; } +#else /* __rtems__ */ + uid = BSD_DEFAULT_UID; + gid = BSD_DEFAULT_GID; + mode = S_IRUSR|S_IWUSR|S_IWGRP; +#endif /* __rtems__ */ flags = flags & TTYMK_CLONING ? MAKEDEV_REF : 0; flags |= MAKEDEV_CHECKNAME; @@ -1391,12 +1411,14 @@ tty_signal_sessleader(struct tty *tp, int sig) /* Make signals start output again. */ tp->t_flags &= ~TF_STOPPED; +#ifndef __rtems__ if (tp->t_session != NULL && tp->t_session->s_leader != NULL) { p = tp->t_session->s_leader; PROC_LOCK(p); kern_psignal(p, sig); PROC_UNLOCK(p); } +#endif /* __rtems__ */ } void @@ -1410,6 +1432,7 @@ tty_signal_pgrp(struct tty *tp, int sig) /* Make signals start output again. */ tp->t_flags &= ~TF_STOPPED; +#ifndef __rtems__ if (sig == SIGINFO && !(tp->t_termios.c_lflag & NOKERNINFO)) tty_info(tp); if (tp->t_pgrp != NULL) { @@ -1420,6 +1443,7 @@ tty_signal_pgrp(struct tty *tp, int sig) pgsignal(tp->t_pgrp, sig, 1, &ksi); PGRP_UNLOCK(tp->t_pgrp); } +#endif /* __rtems__ */ } void @@ -1516,7 +1540,9 @@ tty_set_winsize(struct tty *tp, const struct winsize *wsz) if (memcmp(&tp->t_winsize, wsz, sizeof(*wsz)) == 0) return; tp->t_winsize = *wsz; +#ifndef __rtems__ tty_signal_pgrp(tp, SIGWINCH); +#endif /* __rtems__ */ } static int @@ -1575,9 +1601,11 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, *(int *)data = ttyoutq_bytesused(&tp->t_outq); return (0); case FIOSETOWN: +#ifndef __rtems__ if (tp->t_session != NULL && !tty_is_ctty(tp, td->td_proc)) /* Not allowed to set ownership. */ return (ENOTTY); +#endif /* __rtems__ */ /* Temporarily unlock the TTY to set ownership. */ tty_unlock(tp); @@ -1585,9 +1613,11 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, tty_lock(tp); return (error); case FIOGETOWN: +#ifndef __rtems__ if (tp->t_session != NULL && !tty_is_ctty(tp, td->td_proc)) /* Not allowed to set ownership. */ return (ENOTTY); +#endif /* __rtems__ */ /* Get ownership. */ *(int *)data = fgetown(&tp->t_sigio); @@ -1684,6 +1714,7 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, *(int *)data = TTYDISC; return (0); case TIOCGPGRP: +#ifndef __rtems__ if (!tty_is_ctty(tp, td->td_proc)) return (ENOTTY); @@ -1691,15 +1722,23 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, *(int *)data = tp->t_pgrp->pg_id; else *(int *)data = NO_PID; +#else /* __rtems__ */ + *(int *)data = NO_PID; +#endif /* __rtems__ */ return (0); case TIOCGSID: +#ifndef __rtems__ if (!tty_is_ctty(tp, td->td_proc)) return (ENOTTY); MPASS(tp->t_session); *(int *)data = tp->t_session->s_sid; +#else /* __rtems__ */ + *(int *)data = NO_PID; +#endif /* __rtems__ */ return (0); case TIOCSCTTY: { +#ifndef __rtems__ struct proc *p = td->td_proc; /* XXX: This looks awful. */ @@ -1748,10 +1787,12 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, PROC_LOCK(p); p->p_flag |= P_CONTROLT; PROC_UNLOCK(p); +#endif /* __rtems__ */ return (0); } case TIOCSPGRP: { +#ifndef __rtems__ struct pgrp *pg; /* @@ -1784,6 +1825,7 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, /* Wake up the background process groups. */ cv_broadcast(&tp->t_bgwait); +#endif /* __rtems__ */ return (0); } case TIOCFLUSH: { @@ -1808,6 +1850,7 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, tp->t_drainwait = *(int *)data; return (error); case TIOCCONS: +#ifndef __rtems__ /* Set terminal as console TTY. */ if (*(int *)data) { error = priv_check(td, PRIV_TTY_CONSOLE); @@ -1830,6 +1873,7 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, } else if (constty == tp) { constty_clear(); } +#endif /* __rtems__ */ return (0); case TIOCGWINSZ: /* Obtain window size. */ @@ -1855,14 +1899,18 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, ttydevsw_pktnotify(tp, TIOCPKT_START); return (0); case TIOCSTAT: +#ifndef __rtems__ tty_info(tp); +#endif /* __rtems__ */ return (0); case TIOCSTI: +#ifndef __rtems__ if ((fflag & FREAD) == 0 && priv_check(td, PRIV_TTY_STI)) return (EPERM); if (!tty_is_ctty(tp, td->td_proc) && priv_check(td, PRIV_TTY_STI)) return (EACCES); +#endif /* __rtems__ */ ttydisc_rint(tp, *(char *)data, 0); ttydisc_rint_done(tp); return (0); @@ -1941,9 +1989,17 @@ tty_hiwat_in_unblock(struct tty *tp) * Input flow control. Only leave the high watermark when we * can successfully store the VSTART character. */ +#ifndef __rtems__ if (ttyoutq_write_nofrag(&tp->t_outq, &tp->t_termios.c_cc[VSTART], 1) == 0) tp->t_flags &= ~TF_HIWAT_IN; +#else /* __rtems__ */ + if (ttyoutq_write_nofrag(&tp->t_outq, + &tp->t_termios.c_cc[VSTART], 1) == 0) { + tp->t_flags &= ~TF_HIWAT_IN; + ttydevsw_outwakeup(tp); + } +#endif /* __rtems__ */ } else { /* No input flow control. */ tp->t_flags &= ~TF_HIWAT_IN; @@ -1967,6 +2023,7 @@ ttyhook_defrint(struct tty *tp, char c, int flags) return (0); } +#ifndef __rtems__ int ttyhook_register(struct tty **rtp, struct proc *p, int fd, struct ttyhook *th, void *softc) @@ -2060,6 +2117,7 @@ ttyhook_unregister(struct tty *tp) /* Maybe deallocate the TTY as well. */ tty_rel_free(tp); } +#endif /* __rtems__ */ /* * /dev/console handling. @@ -2114,11 +2172,14 @@ static struct cdevsw ttyconsdev_cdevsw = { .d_ioctl = ttydev_ioctl, .d_kqfilter = ttydev_kqfilter, .d_poll = ttydev_poll, +#ifndef __rtems__ .d_mmap = ttydev_mmap, +#endif /* __rtems__ */ .d_name = "ttyconsdev", .d_flags = D_TTY, }; +#ifndef __rtems__ static void ttyconsdev_init(void *unused __unused) { @@ -2135,6 +2196,7 @@ ttyconsdev_select(const char *name) dev_console_filename = name; } +#endif /* __rtems__ */ /* * Debugging routines. diff --git a/freebsd/sys/kern/tty_ttydisc.c b/freebsd/sys/kern/tty_ttydisc.c index edb1d15..2cdc332 100644 --- a/freebsd/sys/kern/tty_ttydisc.c +++ b/freebsd/sys/kern/tty_ttydisc.c @@ -914,7 +914,9 @@ ttydisc_rint(struct tty *tp, char c, int flags) if (CMP_FLAG(l, ISIG)) { if (CMP_FLAG(l, ICANON|IEXTEN) == (ICANON|IEXTEN)) { if (CMP_CC(VSTATUS, c)) { +#ifndef __rtems__ tty_signal_pgrp(tp, SIGINFO); +#endif /* __rtems__ */ return (0); } } diff --git a/freebsd/sys/sys/conf.h b/freebsd/sys/sys/conf.h index 8d39c62..d5ced5c 100644 --- a/freebsd/sys/sys/conf.h +++ b/freebsd/sys/sys/conf.h @@ -84,9 +84,11 @@ struct cdev { LIST_ENTRY(cdev) si_list; #ifndef __rtems__ LIST_ENTRY(cdev) si_clone; +#endif /* __rtems__ */ LIST_HEAD(, cdev) si_children; LIST_ENTRY(cdev) si_siblings; struct cdev *si_parent; +#ifndef __rtems__ struct mount *si_mountpt; #endif /* __rtems__ */ void *si_drv1, *si_drv2; diff --git a/freebsd/sys/sys/file.h b/freebsd/sys/sys/file.h index 092362b..8f91f52 100644 --- a/freebsd/sys/sys/file.h +++ b/freebsd/sys/sys/file.h @@ -199,6 +199,10 @@ struct file { void *f_label; /* Place-holder for MAC label. */ #else /* __rtems__ */ rtems_libio_t f_io; + union { + struct cdev_privdata *fvn_cdevpriv; + /* (d) Private data for the cdev. */ + } f_vnun; #endif /* __rtems__ */ }; #ifdef __rtems__ diff --git a/freebsd/sys/sys/proc.h b/freebsd/sys/sys/proc.h index 7af3dc2..2b58ffe 100644 --- a/freebsd/sys/sys/proc.h +++ b/freebsd/sys/sys/proc.h @@ -301,7 +301,9 @@ struct thread { u_long td_profil_addr; /* (k) Temporary addr until AST. */ u_int td_profil_ticks; /* (k) Temporary ticks until AST. */ char td_name[MAXCOMLEN + 1]; /* (*) Thread name. */ +#endif /* __rtems__ */ struct file *td_fpop; /* (k) file referencing cdev under op */ +#ifndef __rtems__ int td_dbgflags; /* (c) Userland debugger flags */ siginfo_t td_si; /* (c) For debugger or core file */ int td_ng_outbound; /* (k) Thread entered ng from above. */ -- 1.9.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel