proc->thread stage 4: rework the VFS and DEVICE subsystems to take thread
[dragonfly.git] / sys / netproto / smb / smb_iod.c
index 5190e8b..9176fd7 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/netsmb/smb_iod.c,v 1.1.2.2 2002/04/23 03:45:01 bp Exp $
- * $DragonFly: src/sys/netproto/smb/smb_iod.c,v 1.2 2003/06/17 04:28:54 dillon Exp $
+ * $DragonFly: src/sys/netproto/smb/smb_iod.c,v 1.3 2003/06/25 03:56:06 dillon Exp $
  */
  
 #include <sys/param.h>
@@ -104,12 +104,12 @@ static void
 smb_iod_closetran(struct smbiod *iod)
 {
        struct smb_vc *vcp = iod->iod_vc;
-       struct proc *p = iod->iod_p;
+       struct thread *td = iod->iod_td;
 
        if (vcp->vc_tdata == NULL)
                return;
-       SMB_TRAN_DISCONNECT(vcp, p);
-       SMB_TRAN_DONE(vcp, p);
+       SMB_TRAN_DISCONNECT(vcp, td);
+       SMB_TRAN_DONE(vcp, td);
        vcp->vc_tdata = NULL;
 }
 
@@ -125,7 +125,7 @@ static int
 smb_iod_connect(struct smbiod *iod)
 {
        struct smb_vc *vcp = iod->iod_vc;
-       struct proc *p = iod->iod_p;
+       struct thread *td = iod->iod_td;
        int error;
 
        SMBIODEBUG("%d\n", iod->iod_state);
@@ -141,13 +141,13 @@ smb_iod_connect(struct smbiod *iod)
        vcp->vc_genid++;
        error = 0;
        itry {
-               ithrow(SMB_TRAN_CREATE(vcp, p));
+               ithrow(SMB_TRAN_CREATE(vcp, td));
                SMBIODEBUG("tcreate\n");
                if (vcp->vc_laddr) {
-                       ithrow(SMB_TRAN_BIND(vcp, vcp->vc_laddr, p));
+                       ithrow(SMB_TRAN_BIND(vcp, vcp->vc_laddr, td));
                }
                SMBIODEBUG("tbind\n");
-               ithrow(SMB_TRAN_CONNECT(vcp, vcp->vc_paddr, p));
+               ithrow(SMB_TRAN_CONNECT(vcp, vcp->vc_paddr, td));
                SMB_TRAN_SETPARAM(vcp, SMBTP_SELECTID, &iod->iod_flags);
                iod->iod_state = SMBIOD_ST_TRANACTIVE;
                SMBIODEBUG("tconnect\n");
@@ -209,7 +209,7 @@ smb_iod_treeconnect(struct smbiod *iod, struct smb_share *ssp)
 static int
 smb_iod_sendrq(struct smbiod *iod, struct smb_rq *rqp)
 {
-       struct proc *p = iod->iod_p;
+       struct thread *td = iod->iod_td;
        struct smb_vc *vcp = iod->iod_vc;
        struct smb_share *ssp = rqp->sr_share;
        struct mbuf *m;
@@ -249,7 +249,7 @@ smb_iod_sendrq(struct smbiod *iod, struct smb_rq *rqp)
        SMBSDEBUG("M:%04x, P:%04x, U:%04x, T:%04x\n", rqp->sr_mid, 0, 0, 0);
        m_dumpm(rqp->sr_rq.mb_top);
        m = m_copym(rqp->sr_rq.mb_top, 0, M_COPYALL, M_WAIT);
-       error = rqp->sr_lerror = m ? SMB_TRAN_SEND(vcp, m, p) : ENOBUFS;
+       error = rqp->sr_lerror = m ? SMB_TRAN_SEND(vcp, m, td) : ENOBUFS;
        if (error == 0) {
                getnanotime(&rqp->sr_timesent);
                iod->iod_lastrqsent = rqp->sr_timesent;
@@ -278,7 +278,7 @@ static int
 smb_iod_recvall(struct smbiod *iod)
 {
        struct smb_vc *vcp = iod->iod_vc;
-       struct proc *p = iod->iod_p;
+       struct thread *td = iod->iod_td;
        struct smb_rq *rqp;
        struct mbuf *m;
        u_char *hp;
@@ -295,7 +295,7 @@ smb_iod_recvall(struct smbiod *iod)
        }
        for (;;) {
                m = NULL;
-               error = SMB_TRAN_RECV(vcp, &m, p);
+               error = SMB_TRAN_RECV(vcp, &m, td);
                if (error == EWOULDBLOCK)
                        break;
                if (SMB_TRAN_FATAL(vcp, error)) {
@@ -356,7 +356,7 @@ smb_iod_recvall(struct smbiod *iod)
         */
        SMB_IOD_RQLOCK(iod);
        TAILQ_FOREACH(rqp, &iod->iod_rqlist, sr_link) {
-               if (smb_proc_intr(rqp->sr_cred->scr_p)) {
+               if (smb_proc_intr(rqp->sr_cred->scr_td)) {
                        smb_iod_rqprocessed(rqp, EINTR);
                }
        }
@@ -400,7 +400,7 @@ smb_iod_addrq(struct smb_rq *rqp)
        int error;
 
        SMBIODEBUG("\n");
-       if (rqp->sr_cred->scr_p == iod->iod_p) {
+       if (rqp->sr_cred->scr_td == iod->iod_td) {
                rqp->sr_flags |= SMBR_INTERNAL;
                SMB_IOD_RQLOCK(iod);
                TAILQ_INSERT_HEAD(&iod->iod_rqlist, rqp, sr_link);
@@ -640,7 +640,7 @@ smb_iod_thread(void *arg)
 {
        struct smbiod *iod = arg;
 
-       smb_makescred(&iod->iod_scred, iod->iod_p, NULL);
+       smb_makescred(&iod->iod_scred, iod->iod_td, NULL);
        while ((iod->iod_flags & SMBIOD_SHUTDOWN) == 0) {
                smb_iod_main(iod);
                SMBIODEBUG("going to sleep for %d ticks\n", iod->iod_sleeptimo);
@@ -655,6 +655,7 @@ int
 smb_iod_create(struct smb_vc *vcp)
 {
        struct smbiod *iod;
+       struct proc *newp = NULL;
        int error;
 
        iod = smb_zmalloc(sizeof(*iod), M_SMBIOD, M_WAITOK);
@@ -669,13 +670,14 @@ smb_iod_create(struct smb_vc *vcp)
        TAILQ_INIT(&iod->iod_rqlist);
        smb_sl_init(&iod->iod_evlock, "90evl");
        STAILQ_INIT(&iod->iod_evlist);
-       error = kthread_create_compat(smb_iod_thread, iod, &iod->iod_p,
+       error = kthread_create_compat(smb_iod_thread, iod, &newp,
            RFNOWAIT, "smbiod%d", iod->iod_id);
        if (error) {
                SMBERROR("can't start smbiod: %d", error);
                free(iod, M_SMBIOD);
                return error;
        }
+       iod->iod_td = newp->p_thread;
        return 0;
 }