summaryrefslogtreecommitdiffstats
path: root/sys/netgraph
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2001-09-12 08:38:13 +0000
committerjulian <julian@FreeBSD.org>2001-09-12 08:38:13 +0000
commit5596676e6c6c1e81e899cd0531f9b1c28a292669 (patch)
treeb1a19fcdf05759281fab0d89efb13f0fdf42102e /sys/netgraph
parent83e00d4274950d2b531c24692cd123538ffbddb9 (diff)
downloadFreeBSD-src-5596676e6c6c1e81e899cd0531f9b1c28a292669.zip
FreeBSD-src-5596676e6c6c1e81e899cd0531f9b1c28a292669.tar.gz
KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
Diffstat (limited to 'sys/netgraph')
-rw-r--r--sys/netgraph/ng_ether.c3
-rw-r--r--sys/netgraph/ng_ksocket.c22
-rw-r--r--sys/netgraph/ng_mppc.c3
-rw-r--r--sys/netgraph/ng_parse.c12
-rw-r--r--sys/netgraph/ng_socket.c24
-rw-r--r--sys/netgraph/ng_tee.c6
-rw-r--r--sys/netgraph/ng_tty.c8
7 files changed, 50 insertions, 28 deletions
diff --git a/sys/netgraph/ng_ether.c b/sys/netgraph/ng_ether.c
index 18faa65..69e1b35 100644
--- a/sys/netgraph/ng_ether.c
+++ b/sys/netgraph/ng_ether.c
@@ -609,6 +609,9 @@ ng_ether_rcvdata(hook_p hook, item_p item)
if (hook == priv->upper)
return ng_ether_rcv_upper(node, m, meta);
panic("%s: weird hook", __FUNCTION__);
+#ifdef RESTARTABLE_PANICS /* so we don;t get an error msg in LINT */
+ return NULL;
+#endif
}
/*
diff --git a/sys/netgraph/ng_ksocket.c b/sys/netgraph/ng_ksocket.c
index c29aa7d..b47fe2c 100644
--- a/sys/netgraph/ng_ksocket.c
+++ b/sys/netgraph/ng_ksocket.c
@@ -548,7 +548,7 @@ ng_ksocket_constructor(node_p node)
static int
ng_ksocket_newhook(node_p node, hook_p hook, const char *name0)
{
- struct proc *p = curproc ? curproc : &proc0; /* XXX broken */
+ struct thread *td = curthread ? curthread : thread0; /* XXX broken */
const priv_p priv = NG_NODE_PRIVATE(node);
char *s1, *s2, name[NG_HOOKLEN+1];
int family, type, protocol, error;
@@ -586,7 +586,7 @@ ng_ksocket_newhook(node_p node, hook_p hook, const char *name0)
return (EINVAL);
/* Create the socket */
- error = socreate(family, &priv->so, type, protocol, p);
+ error = socreate(family, &priv->so, type, protocol, td);
if (error != 0)
return (error);
@@ -656,7 +656,7 @@ ng_ksocket_connect(hook_p hook)
static int
ng_ksocket_rcvmsg(node_p node, item_p item, hook_p lasthook)
{
- struct proc *p = curproc ? curproc : &proc0; /* XXX broken */
+ struct thread *td = curthread ? curthread : thread0; /* XXX broken */
const priv_p priv = NG_NODE_PRIVATE(node);
struct socket *const so = priv->so;
struct ng_mesg *resp = NULL;
@@ -681,7 +681,7 @@ ng_ksocket_rcvmsg(node_p node, item_p item, hook_p lasthook)
ERROUT(ENXIO);
/* Bind */
- error = sobind(so, sa, p);
+ error = sobind(so, sa, td);
break;
}
case NGM_KSOCKET_LISTEN:
@@ -693,7 +693,7 @@ ng_ksocket_rcvmsg(node_p node, item_p item, hook_p lasthook)
ERROUT(ENXIO);
/* Listen */
- error = solisten(so, *((int32_t *)msg->data), p);
+ error = solisten(so, *((int32_t *)msg->data), td);
break;
}
@@ -744,7 +744,7 @@ ng_ksocket_rcvmsg(node_p node, item_p item, hook_p lasthook)
/* Do connect */
if ((so->so_state & SS_ISCONNECTING) != 0)
ERROUT(EALREADY);
- if ((error = soconnect(so, sa, p)) != 0) {
+ if ((error = soconnect(so, sa, td)) != 0) {
so->so_state &= ~SS_ISCONNECTING;
ERROUT(error);
}
@@ -821,7 +821,7 @@ ng_ksocket_rcvmsg(node_p node, item_p item, hook_p lasthook)
sopt.sopt_dir = SOPT_GET;
sopt.sopt_level = ksopt->level;
sopt.sopt_name = ksopt->name;
- sopt.sopt_p = NULL;
+ sopt.sopt_td = NULL;
sopt.sopt_valsize = NG_KSOCKET_MAX_OPTLEN;
ksopt = (struct ng_ksocket_sockopt *)resp->data;
sopt.sopt_val = ksopt->value;
@@ -855,7 +855,7 @@ ng_ksocket_rcvmsg(node_p node, item_p item, hook_p lasthook)
sopt.sopt_name = ksopt->name;
sopt.sopt_val = ksopt->value;
sopt.sopt_valsize = valsize;
- sopt.sopt_p = NULL;
+ sopt.sopt_td = NULL;
error = sosetopt(so, &sopt);
break;
}
@@ -881,7 +881,7 @@ done:
static int
ng_ksocket_rcvdata(hook_p hook, item_p item)
{
- struct proc *p = curproc ? curproc : &proc0; /* XXX broken */
+ struct thread *td = curthread ? curthread : thread0; /* XXX broken */
const node_p node = NG_HOOK_NODE(hook);
const priv_p priv = NG_NODE_PRIVATE(node);
struct socket *const so = priv->so;
@@ -890,7 +890,7 @@ ng_ksocket_rcvdata(hook_p hook, item_p item)
NGI_GET_M(item, m);
NG_FREE_ITEM(item);
- error = (*so->so_proto->pr_usrreqs->pru_sosend)(so, 0, 0, m, 0, 0, p);
+ error = (*so->so_proto->pr_usrreqs->pru_sosend)(so, 0, 0, m, 0, 0, td);
return (error);
}
@@ -1053,7 +1053,7 @@ ng_ksocket_incoming2(node_p node, hook_p hook, void *arg1, int waitflag)
}
/* Read and forward available mbuf's */
- auio.uio_procp = NULL;
+ auio.uio_td = NULL;
auio.uio_resid = 1000000000;
flags = MSG_DONTWAIT;
do {
diff --git a/sys/netgraph/ng_mppc.c b/sys/netgraph/ng_mppc.c
index e0bd485..a1d6ce8 100644
--- a/sys/netgraph/ng_mppc.c
+++ b/sys/netgraph/ng_mppc.c
@@ -388,6 +388,9 @@ ng_mppc_rcvdata(hook_p hook, item_p item)
/* Oops */
panic("%s: unknown hook", __FUNCTION__);
+#ifdef RESTARTABLE_PANICS
+ return (EINVAL);
+#endif
}
/*
diff --git a/sys/netgraph/ng_parse.c b/sys/netgraph/ng_parse.c
index 5daf600..fa29c6b 100644
--- a/sys/netgraph/ng_parse.c
+++ b/sys/netgraph/ng_parse.c
@@ -378,6 +378,9 @@ ng_int8_unparse(const struct ng_parse_type *type,
break;
default:
panic("%s: unknown type", __FUNCTION__);
+#ifdef RESTARTABLE_PANICS
+ return(0);
+#endif
}
NG_PARSE_APPEND(fmt, fval);
*off += sizeof(int8_t);
@@ -472,6 +475,9 @@ ng_int16_unparse(const struct ng_parse_type *type,
break;
default:
panic("%s: unknown type", __FUNCTION__);
+#ifdef RESTARTABLE_PANICS
+ return(0);
+#endif
}
NG_PARSE_APPEND(fmt, fval);
*off += sizeof(int16_t);
@@ -566,6 +572,9 @@ ng_int32_unparse(const struct ng_parse_type *type,
break;
default:
panic("%s: unknown type", __FUNCTION__);
+#ifdef RESTARTABLE_PANICS
+ return(0);
+#endif
}
NG_PARSE_APPEND(fmt, fval);
*off += sizeof(int32_t);
@@ -659,6 +668,9 @@ ng_int64_unparse(const struct ng_parse_type *type,
break;
default:
panic("%s: unknown type", __FUNCTION__);
+#ifdef RESTARTABLE_PANICS
+ return(0);
+#endif
}
NG_PARSE_APPEND(fmt, fval);
*off += sizeof(int64_t);
diff --git a/sys/netgraph/ng_socket.c b/sys/netgraph/ng_socket.c
index 09b8ab7..a7e7e20 100644
--- a/sys/netgraph/ng_socket.c
+++ b/sys/netgraph/ng_socket.c
@@ -117,7 +117,7 @@ static int ng_attach_data(struct socket *so);
static int ng_attach_cntl(struct socket *so);
static int ng_attach_common(struct socket *so, int type);
static void ng_detach_common(struct ngpcb *pcbp, int type);
-/*static int ng_internalize(struct mbuf *m, struct proc *p); */
+/*static int ng_internalize(struct mbuf *m, struct thread *p); */
static int ng_connect_data(struct sockaddr *nam, struct ngpcb *pcbp);
static int ng_bind(struct sockaddr *nam, struct ngpcb *pcbp);
@@ -162,11 +162,11 @@ LIST_HEAD(, ngpcb) ngsocklist;
***************************************************************/
static int
-ngc_attach(struct socket *so, int proto, struct proc *p)
+ngc_attach(struct socket *so, int proto, struct thread *td)
{
struct ngpcb *const pcbp = sotongpcb(so);
- if (suser(p))
+ if (suser_td(td))
return (EPERM);
if (pcbp != NULL)
return (EISCONN);
@@ -186,7 +186,7 @@ ngc_detach(struct socket *so)
static int
ngc_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
- struct mbuf *control, struct proc *p)
+ struct mbuf *control, struct thread *td)
{
struct ngpcb *const pcbp = sotongpcb(so);
struct sockaddr_ng *const sap = (struct sockaddr_ng *) addr;
@@ -200,7 +200,7 @@ ngc_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
goto release;
}
#ifdef NOTYET
- if (control && (error = ng_internalize(control, p))) {
+ if (control && (error = ng_internalize(control, td))) {
if (pcbp->sockdata == NULL) {
error = ENOTCONN;
goto release;
@@ -287,7 +287,7 @@ release:
}
static int
-ngc_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
+ngc_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
{
struct ngpcb *const pcbp = sotongpcb(so);
@@ -297,7 +297,7 @@ ngc_bind(struct socket *so, struct sockaddr *nam, struct proc *p)
}
static int
-ngc_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
+ngc_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
printf(" program tried to connect control socket to remote node\n ");
/*
@@ -312,7 +312,7 @@ printf(" program tried to connect control socket to remote node\n ");
***************************************************************/
static int
-ngd_attach(struct socket *so, int proto, struct proc *p)
+ngd_attach(struct socket *so, int proto, struct thread *td)
{
struct ngpcb *const pcbp = sotongpcb(so);
@@ -334,7 +334,7 @@ ngd_detach(struct socket *so)
static int
ngd_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
- struct mbuf *control, struct proc *p)
+ struct mbuf *control, struct thread *td)
{
struct ngpcb *const pcbp = sotongpcb(so);
struct sockaddr_ng *const sap = (struct sockaddr_ng *) addr;
@@ -402,7 +402,7 @@ release:
}
static int
-ngd_connect(struct socket *so, struct sockaddr *nam, struct proc *p)
+ngd_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
{
struct ngpcb *const pcbp = sotongpcb(so);
@@ -567,9 +567,9 @@ ng_detach_common(struct ngpcb *pcbp, int which)
* which after all is the purpose of this whole system.
*/
static int
-ng_internalize(struct mbuf *control, struct proc *p)
+ng_internalize(struct mbuf *control, struct thread *td)
{
- struct filedesc *fdp = p->p_fd;
+ struct filedesc *fdp = td->td_proc->p_fd;
struct cmsghdr *cm = mtod(control, struct cmsghdr *);
struct file *fp;
struct vnode *vn;
diff --git a/sys/netgraph/ng_tee.c b/sys/netgraph/ng_tee.c
index e95c41f..7b47617 100644
--- a/sys/netgraph/ng_tee.c
+++ b/sys/netgraph/ng_tee.c
@@ -309,8 +309,12 @@ ngt_rcvdata(hook_p hook, item_p item)
} else if (hinfo == &sc->left2right) {
dup = NULL;
dest = &sc->left;
- } else
+ } else {
panic("%s: no hook!", __FUNCTION__);
+#ifdef RESTARTABLE_PANICS
+ return(EINVAL);
+#endif
+ }
/* Update stats on incoming hook */
hinfo->stats.inOctets += m->m_pkthdr.len;
diff --git a/sys/netgraph/ng_tty.c b/sys/netgraph/ng_tty.c
index 690892f..cb3c770 100644
--- a/sys/netgraph/ng_tty.c
+++ b/sys/netgraph/ng_tty.c
@@ -120,7 +120,7 @@ static int ngt_close(struct tty *tp, int flag);
static int ngt_read(struct tty *tp, struct uio *uio, int flag);
static int ngt_write(struct tty *tp, struct uio *uio, int flag);
static int ngt_tioctl(struct tty *tp,
- u_long cmd, caddr_t data, int flag, struct proc *);
+ u_long cmd, caddr_t data, int flag, struct thread *);
static int ngt_input(int c, struct tty *tp);
static int ngt_start(struct tty *tp);
@@ -184,13 +184,13 @@ static int ngt_ldisc;
static int
ngt_open(dev_t dev, struct tty *tp)
{
- struct proc *const p = curproc; /* XXX */
+ struct thread *const td = curthread; /* XXX */
char name[sizeof(NG_TTY_NODE_TYPE) + 8];
sc_p sc;
int s, error;
/* Super-user only */
- if ((error = suser(p)))
+ if ((error = suser_td(td)))
return (error);
s = splnet();
(void) spltty(); /* XXX is this necessary? */
@@ -304,7 +304,7 @@ ngt_write(struct tty *tp, struct uio *uio, int flag)
* We implement the NGIOCGINFO ioctl() defined in ng_message.h.
*/
static int
-ngt_tioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct proc *p)
+ngt_tioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct thread *td)
{
const sc_p sc = (sc_p) tp->t_sc;
int s, error = 0;
OpenPOWER on IntegriCloud