diff options
author | Jennifer Averett <jennifer.averett@oarcorp.com> | 2012-05-01 13:52:03 -0500 |
---|---|---|
committer | Jennifer Averett <jennifer.averett@oarcorp.com> | 2012-05-01 13:52:03 -0500 |
commit | 73a88812687f949d24f3a0c66227551cf18940df (patch) | |
tree | 81c5c32b9c89702b5390a15af3fb64e9b509f43e | |
parent | Added a define of 0 for bootverbose. (diff) | |
download | rtems-libbsd-73a88812687f949d24f3a0c66227551cf18940df.tar.bz2 |
Added rtems_bsd_thread0_ucred as a single global ucred.
-rw-r--r-- | freebsd/kern/init_main.c | 9 | ||||
-rw-r--r-- | freebsd/netinet/tcp_syncache.c | 11 | ||||
-rw-r--r-- | freebsd/sys/proc.h | 4 |
3 files changed, 24 insertions, 0 deletions
diff --git a/freebsd/kern/init_main.c b/freebsd/kern/init_main.c index 540e0cb1..8ae8a71f 100644 --- a/freebsd/kern/init_main.c +++ b/freebsd/kern/init_main.c @@ -118,6 +118,8 @@ SYSINIT(placeholder, SI_SUB_DUMMY, SI_ORDER_ANY, NULL, NULL); * The sysinit table itself. Items are checked off as the are run. * If we want to register new sysinit types, add them to newsysinit. */ +#else /* __rtems__ */ +struct ucred *rtems_bsd_thread0_ucred; #endif /* __rtems__ */ SET_DECLARE(sysinit_set, struct sysinit); #ifndef __rtems__ @@ -191,6 +193,13 @@ mi_startup(void) #ifndef __rtems__ if (boothowto & RB_VERBOSE) bootverbose++; +#else /* __rtems__ */ + rtems_bsd_thread0_ucred = crget(); + rtems_bsd_thread0_ucred->cr_ngroups = 1; /* group 0 */ + rtems_bsd_thread0_ucred->cr_uidinfo = uifind(0); + rtems_bsd_thread0_ucred = uifind(0); + rtems_bsd_thread0_ucred->cr_prison = &prison0; + #endif /* __rtems__ */ if (sysinit == NULL) { diff --git a/freebsd/netinet/tcp_syncache.c b/freebsd/netinet/tcp_syncache.c index 17ff3fa4..78790cc8 100644 --- a/freebsd/netinet/tcp_syncache.c +++ b/freebsd/netinet/tcp_syncache.c @@ -730,8 +730,13 @@ syncache_socket(struct syncache *sc, struct socket *lso, struct mbuf *m) laddr6 = inp->in6p_laddr; if (IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr)) inp->in6p_laddr = sc->sc_inc.inc6_laddr; +#ifndef __rtems__ if ((error = in6_pcbconnect(inp, (struct sockaddr *)&sin6, thread0.td_ucred)) != 0) { +#else /* __rtems__ */ + if ((error = in6_pcbconnect(inp, (struct sockaddr *)&sin6, + rtems_bsd_thread0_ucred)) != 0) { +#endif /* __rtems__ */ inp->in6p_laddr = laddr6; if ((s = tcp_log_addrs(&sc->sc_inc, NULL, NULL, NULL))) { log(LOG_DEBUG, "%s; %s: in6_pcbconnect failed " @@ -765,8 +770,14 @@ syncache_socket(struct syncache *sc, struct socket *lso, struct mbuf *m) laddr = inp->inp_laddr; if (inp->inp_laddr.s_addr == INADDR_ANY) inp->inp_laddr = sc->sc_inc.inc_laddr; +#ifndef __rtems__ if ((error = in_pcbconnect(inp, (struct sockaddr *)&sin, thread0.td_ucred)) != 0) { +#else /* __rtems__ */ + if ((error = in_pcbconnect(inp, (struct sockaddr *)&sin, + rtems_bsd_thread0_ucred)) != 0) { +#endif /* __rtems__ */ + inp->inp_laddr = laddr; if ((s = tcp_log_addrs(&sc->sc_inc, NULL, NULL, NULL))) { log(LOG_DEBUG, "%s; %s: in_pcbconnect failed " diff --git a/freebsd/sys/proc.h b/freebsd/sys/proc.h index ebbffd7c..39ddd782 100644 --- a/freebsd/sys/proc.h +++ b/freebsd/sys/proc.h @@ -796,7 +796,11 @@ extern struct sx allproc_lock; extern struct sx proctree_lock; extern struct mtx ppeers_lock; extern struct proc proc0; /* Process slot for swapper. */ +#ifndef __rtems__ extern struct thread thread0; /* Primary thread in proc0. */ +#else /* __rtems__ */ +extern struct ucred *rtems_bsd_thread0_ucred; +#endif /* __rtems__ */ extern struct vmspace vmspace0; /* VM space for proc0. */ extern int hogticks; /* Limit on kernel cpu hogs. */ extern int lastpid; |