]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netat/sys_glue.c
xnu-792.25.20.tar.gz
[apple/xnu.git] / bsd / netat / sys_glue.c
index 47d47c496b5727016514db046ca519b412d194f6..6c6793e76554baedce8cc94d7930fb8537a5c772 100644 (file)
@@ -92,7 +92,6 @@ SYSCTL_STRUCT(_net_appletalk, OID_AUTO, ddpstats, CTLFLAG_RD,
 static void ioccmd_t_32_to_64( ioccmd_t *from_p, user_ioccmd_t *to_p );
 static void ioccmd_t_64_to_32( user_ioccmd_t *from_p, ioccmd_t *to_p );
 
 static void ioccmd_t_32_to_64( ioccmd_t *from_p, user_ioccmd_t *to_p );
 static void ioccmd_t_64_to_32( user_ioccmd_t *from_p, ioccmd_t *to_p );
 
-atlock_t refall_lock;
 
 caddr_t        atp_free_cluster_list = 0;
 
 
 caddr_t        atp_free_cluster_list = 0;
 
@@ -289,7 +288,7 @@ int _ATrw(fp, rw, uio, p)
      struct uio *uio;
      struct proc *p;
 {
      struct uio *uio;
      struct proc *p;
 {
-    int s, err, len, clen = 0, res;
+    int err, len, clen = 0, res;
     gref_t *gref;
     gbuf_t *m, *mhead, *mprev;
 
     gref_t *gref;
     gbuf_t *m, *mhead, *mprev;
 
@@ -301,7 +300,6 @@ int _ATrw(fp, rw, uio, p)
     if ((len = uio_resid(uio)) == 0)
        return 0;
 
     if ((len = uio_resid(uio)) == 0)
        return 0;
 
-    ATDISABLE(s, gref->lock);
 
     if (rw == UIO_READ) {
        KERNEL_DEBUG(DBG_ADSP_ATRW, 0, gref, len, gref->rdhead, 0);
 
     if (rw == UIO_READ) {
        KERNEL_DEBUG(DBG_ADSP_ATRW, 0, gref, len, gref->rdhead, 0);
@@ -309,23 +307,18 @@ int _ATrw(fp, rw, uio, p)
                gref->sevents |= POLLMSG;
                err = msleep(&gref->event, atalk_mutex, PSOCK | PCATCH, "AT read", 0);
                gref->sevents &= ~POLLMSG;
                gref->sevents |= POLLMSG;
                err = msleep(&gref->event, atalk_mutex, PSOCK | PCATCH, "AT read", 0);
                gref->sevents &= ~POLLMSG;
-               if (err != 0) {
-                       ATENABLE(s, gref->lock);
+               if (err != 0)
                        return err;
                        return err;
-               }
                KERNEL_DEBUG(DBG_ADSP_ATRW, 1, gref, gref->rdhead, mhead, gbuf_next(mhead));
        }
 
                KERNEL_DEBUG(DBG_ADSP_ATRW, 1, gref, gref->rdhead, mhead, gbuf_next(mhead));
        }
 
-       if (gref->errno) {
-               ATENABLE(s, gref->lock);
+       if (gref->errno)
                return EPIPE;
                return EPIPE;
-       }
        if ((gref->rdhead = gbuf_next(mhead)) == 0)
                gref->rdtail = 0;
 
        KERNEL_DEBUG(DBG_ADSP_ATRW, 2, gref, gref->rdhead, mhead, gbuf_next(mhead));
 
        if ((gref->rdhead = gbuf_next(mhead)) == 0)
                gref->rdtail = 0;
 
        KERNEL_DEBUG(DBG_ADSP_ATRW, 2, gref, gref->rdhead, mhead, gbuf_next(mhead));
 
-       ATENABLE(s, gref->lock);
 
 //##### LD TEST 08/05
 //     simple_lock(&gref->lock);
 
 //##### LD TEST 08/05
 //     simple_lock(&gref->lock);
@@ -357,12 +350,10 @@ int _ATrw(fp, rw, uio, p)
                        gbuf_cont(mprev) = 0;
                else
                        mhead = 0;
                        gbuf_cont(mprev) = 0;
                else
                        mhead = 0;
-               ATDISABLE(s, gref->lock);
                if (gref->rdhead == 0)
                        gref->rdtail = m;
                gbuf_next(m) = gref->rdhead;
                gref->rdhead = m;
                if (gref->rdhead == 0)
                        gref->rdtail = m;
                gbuf_next(m) = gref->rdhead;
                gref->rdhead = m;
-               ATENABLE(s, gref->lock);
        }
        if (mhead)
                gbuf_freem(mhead);
        }
        if (mhead)
                gbuf_freem(mhead);
@@ -375,14 +366,11 @@ int _ATrw(fp, rw, uio, p)
                        gref->sevents |= POLLSYNC;
                        err = msleep(&gref->event, atalk_mutex, PSOCK | PCATCH, "AT write", 0);
                        gref->sevents &= ~POLLSYNC;
                        gref->sevents |= POLLSYNC;
                        err = msleep(&gref->event, atalk_mutex, PSOCK | PCATCH, "AT write", 0);
                        gref->sevents &= ~POLLSYNC;
-                       if (err != 0) {
-                               ATENABLE(s, gref->lock);
+                       if (err != 0)
                                return err;
                                return err;
-                       }
                }
        }
 
                }
        }
 
-       ATENABLE(s, gref->lock);
 
        /* allocate a buffer to copy in the write data */
        if ((m = gbuf_alloc(AT_WR_OFFSET+len, PRI_MED)) == 0)
 
        /* allocate a buffer to copy in the write data */
        if ((m = gbuf_alloc(AT_WR_OFFSET+len, PRI_MED)) == 0)
@@ -443,7 +431,7 @@ int _ATwrite(fp, uio, cred, flags, p)
 /* bms:  update to be callable from kernel */
 int at_ioctl(gref_t *gref, u_long cmd, caddr_t arg, int fromKernel)
 {
 /* bms:  update to be callable from kernel */
 int at_ioctl(gref_t *gref, u_long cmd, caddr_t arg, int fromKernel)
 {
-    int s, err = 0, len;
+    int err = 0, len;
     u_int size;
     gbuf_t *m, *mdata;
     ioc_t *ioc;
     u_int size;
     gbuf_t *m, *mdata;
     ioc_t *ioc;
@@ -523,7 +511,6 @@ int at_ioctl(gref_t *gref, u_long cmd, caddr_t arg, int fromKernel)
        gref_wput(gref, m);
 
     /* wait for the ioc ack */
        gref_wput(gref, m);
 
     /* wait for the ioc ack */
-    ATDISABLE(s, gref->lock);
     while ((m = gref->ichead) == 0) {
         gref->sevents |= POLLPRI;
 #ifdef APPLETALK_DEBUG
     while ((m = gref->ichead) == 0) {
         gref->sevents |= POLLPRI;
 #ifdef APPLETALK_DEBUG
@@ -532,7 +519,6 @@ int at_ioctl(gref_t *gref, u_long cmd, caddr_t arg, int fromKernel)
                err = msleep(&gref->iocevent, atalk_mutex, PSOCK | PCATCH, "AT ioctl", 0);
                gref->sevents &= ~POLLPRI;
                if (err != 0) {
                err = msleep(&gref->iocevent, atalk_mutex, PSOCK | PCATCH, "AT ioctl", 0);
                gref->sevents &= ~POLLPRI;
                if (err != 0) {
-                       ATENABLE(s, gref->lock);
 #ifdef APPLETALK_DEBUG
                        kprintf("at_ioctl: EINTR\n");
 #endif
 #ifdef APPLETALK_DEBUG
                        kprintf("at_ioctl: EINTR\n");
 #endif
@@ -546,7 +532,6 @@ int at_ioctl(gref_t *gref, u_long cmd, caddr_t arg, int fromKernel)
 
        gref->ichead = gbuf_next(m);
 
 
        gref->ichead = gbuf_next(m);
 
-       ATENABLE(s, gref->lock);
 
 #ifdef APPLETALK_DEBUG
        kprintf("at_ioctl: woke up from ioc sleep gref = 0x%x\n", 
 
 #ifdef APPLETALK_DEBUG
        kprintf("at_ioctl: woke up from ioc sleep gref = 0x%x\n", 
@@ -633,7 +618,7 @@ int _ATselect(fp, which, wql, proc)
        void * wql;
        struct proc *proc;
 {
        void * wql;
        struct proc *proc;
 {
-       int s, err, rc = 0;
+       int err, rc = 0;
        gref_t *gref;
 
        /* Radar 4128949: Drop the proc_fd lock here to avoid lock inversion issues with the other AT calls
        gref_t *gref;
 
        /* Radar 4128949: Drop the proc_fd lock here to avoid lock inversion issues with the other AT calls
@@ -651,7 +636,6 @@ int _ATselect(fp, which, wql, proc)
        if (err != 0)
                rc = 1;
        else {
        if (err != 0)
                rc = 1;
        else {
-            ATDISABLE(s, gref->lock);
             if (which == FREAD) {
                  if (gref->rdhead || (gref->readable && (*gref->readable)(gref)))
                       rc = 1;
             if (which == FREAD) {
                  if (gref->rdhead || (gref->readable && (*gref->readable)(gref)))
                       rc = 1;
@@ -671,7 +655,6 @@ int _ATselect(fp, which, wql, proc)
                  } else
                       rc = 1;
             }
                  } else
                       rc = 1;
             }
-            ATENABLE(s, gref->lock);
        }
 
        return rc;
        }
 
        return rc;
@@ -689,9 +672,7 @@ void atalk_putnext(gref, m)
        gref_t *gref;
        gbuf_t *m;
 {
        gref_t *gref;
        gbuf_t *m;
 {
-       int s;
 
 
-       ATDISABLE(s, gref->lock);
 
        /* *** potential leak? *** */
        gbuf_next(m) = 0;
 
        /* *** potential leak? *** */
        gbuf_next(m) = 0;
@@ -736,7 +717,6 @@ void atalk_putnext(gref, m)
                    }
        } /* switch gbuf_type(m) */
 
                    }
        } /* switch gbuf_type(m) */
 
-       ATENABLE(s, gref->lock);
 } /* atalk_putnext */
 
 void atalk_enablew(gref)
 } /* atalk_putnext */
 
 void atalk_enablew(gref)
@@ -749,9 +729,7 @@ void atalk_enablew(gref)
 void atalk_flush(gref)
        gref_t *gref;
 {
 void atalk_flush(gref)
        gref_t *gref;
 {
-       int s;
 
 
-       ATDISABLE(s, gref->lock);
        if (gref->rdhead) {
                gbuf_freel(gref->rdhead);
                gref->rdhead = 0;
        if (gref->rdhead) {
                gbuf_freel(gref->rdhead);
                gref->rdhead = 0;
@@ -760,7 +738,6 @@ void atalk_flush(gref)
                gbuf_freel(gref->ichead);
                gref->ichead = 0;
        }
                gbuf_freel(gref->ichead);
                gref->ichead = 0;
        }
-       ATENABLE(s, gref->lock);
 }
 
 /*
 }
 
 /*
@@ -771,8 +748,6 @@ void atalk_notify(gref, errno)
        register gref_t *gref;
        int errno;
 {
        register gref_t *gref;
        int errno;
 {
-       int s;
-       ATDISABLE(s, gref->lock);
 
        if (gref->atpcb_socket) {
            /* For DDP --
 
        if (gref->atpcb_socket) {
            /* For DDP --
@@ -803,35 +778,29 @@ void atalk_notify(gref, errno)
                }
            }
        }
                }
            }
        }
-       ATENABLE(s, gref->lock);
 } /* atalk_notify */
 
 void atalk_notify_sel(gref)
        gref_t *gref;
 {
 } /* atalk_notify */
 
 void atalk_notify_sel(gref)
        gref_t *gref;
 {
-       int s;
 
 
-       ATDISABLE(s, gref->lock);
        if (gref->sevents & POLLIN) {
                gref->sevents &= ~POLLIN;
                selwakeup(&gref->si);
        }
        if (gref->sevents & POLLIN) {
                gref->sevents &= ~POLLIN;
                selwakeup(&gref->si);
        }
-       ATENABLE(s, gref->lock);
 }
 
 int atalk_peek(gref, event)
        gref_t *gref;
        unsigned char *event;
 {
 }
 
 int atalk_peek(gref, event)
        gref_t *gref;
        unsigned char *event;
 {
-       int s, rc;
+       int rc;
 
 
-       ATDISABLE(s, gref->lock);
        if (gref->rdhead) {
                *event = *gbuf_rptr(gref->rdhead);
                rc = 0;
        } else
                rc = -1;
        if (gref->rdhead) {
                *event = *gbuf_rptr(gref->rdhead);
                rc = 0;
        } else
                rc = -1;
-       ATENABLE(s, gref->lock);
 
        return rc;
 }
 
        return rc;
 }
@@ -877,15 +846,13 @@ int gref_alloc(grefp)
        gref_t **grefp;
 {
        extern gbuf_t *atp_resource_m;
        gref_t **grefp;
 {
        extern gbuf_t *atp_resource_m;
-       int i, s;
+       int i;
        gbuf_t *m;
        gref_t *gref, *gref_array;
 
        *grefp = (gref_t *)NULL;
 
        gbuf_t *m;
        gref_t *gref, *gref_array;
 
        *grefp = (gref_t *)NULL;
 
-       ATDISABLE(s, refall_lock);
        if (gref_free_list == 0) {
        if (gref_free_list == 0) {
-               ATENABLE(s, refall_lock);
 #ifdef APPLETALK_DEBUG
                kprintf("gref_alloc: gbufalloc size=%d\n", GREF_PER_BLK*sizeof(gref_t));
 #endif
 #ifdef APPLETALK_DEBUG
                kprintf("gref_alloc: gbufalloc size=%d\n", GREF_PER_BLK*sizeof(gref_t));
 #endif
@@ -895,7 +862,6 @@ int gref_alloc(grefp)
                gref_array = (gref_t *)gbuf_rptr(m);
                for (i=0; i < GREF_PER_BLK-1; i++)
                        gref_array[i].atpcb_next = (gref_t *)&gref_array[i+1];
                gref_array = (gref_t *)gbuf_rptr(m);
                for (i=0; i < GREF_PER_BLK-1; i++)
                        gref_array[i].atpcb_next = (gref_t *)&gref_array[i+1];
-               ATDISABLE(s, refall_lock);
                gbuf_cont(m) = atp_resource_m;
                atp_resource_m = m;
                gref_array[i].atpcb_next = gref_free_list;
                gbuf_cont(m) = atp_resource_m;
                atp_resource_m = m;
                gref_array[i].atpcb_next = gref_free_list;
@@ -904,10 +870,6 @@ int gref_alloc(grefp)
 
        gref = gref_free_list;
        gref_free_list = gref->atpcb_next;
 
        gref = gref_free_list;
        gref_free_list = gref->atpcb_next;
-       ATENABLE(s, refall_lock);
-       ATLOCKINIT(gref->lock);
-//### LD Test 08/05/98
-//     simple_lock_init(&gref->lock);
        ATEVENTINIT(gref->event);
        ATEVENTINIT(gref->iocevent);
 
        ATEVENTINIT(gref->event);
        ATEVENTINIT(gref->iocevent);
 
@@ -921,7 +883,7 @@ int gref_alloc(grefp)
 /* bms:  make gref_close callable from kernel */
 int gref_close(gref_t *gref)
 {
 /* bms:  make gref_close callable from kernel */
 int gref_close(gref_t *gref)
 {
-       int s, rc;
+       int rc;
 
        switch (gref->proto) {
 
 
        switch (gref->proto) {
 
@@ -949,11 +911,9 @@ int gref_close(gref_t *gref)
                selthreadclear(&gref->si);
 
                /* from original gref_free() */
                selthreadclear(&gref->si);
 
                /* from original gref_free() */
-               ATDISABLE(s, refall_lock);
                bzero((char *)gref, sizeof(gref_t));
                gref->atpcb_next = gref_free_list;
                gref_free_list = gref;
                bzero((char *)gref, sizeof(gref_t));
                gref->atpcb_next = gref_free_list;
                gref_free_list = gref;
-               ATENABLE(s, refall_lock);
        }
 
        return rc;
        }
 
        return rc;
@@ -990,7 +950,7 @@ struct mbuf *m_clattach(extbuf, extfree, extsize, extarg, wait)
         m->m_ext.ext_size = extsize;
         m->m_ext.ext_arg = extarg;
         m->m_ext.ext_refs.forward = 
         m->m_ext.ext_size = extsize;
         m->m_ext.ext_arg = extarg;
         m->m_ext.ext_refs.forward = 
-         m->m_ext.ext_refs.backward = &m->m_ext.ext_refs;
+               m->m_ext.ext_refs.backward = &m->m_ext.ext_refs;
         m->m_data = extbuf;
         m->m_flags |= M_EXT;
 
         m->m_data = extbuf;
         m->m_flags |= M_EXT;
 
@@ -1069,7 +1029,7 @@ struct mbuf *m_lgbuf_alloc(size, wait)
        if (atp_free_cluster_list)
                atp_delete_free_clusters(NULL); /* delete any free clusters on the free list */
 
        if (atp_free_cluster_list)
                atp_delete_free_clusters(NULL); /* delete any free clusters on the free list */
 
-       /* Radar 5423399 
+       /* Radar 5423402 
         * check that the passed size is within admissible boundaries
         * The max data size being ASP of 4576 (8 * ATP_DATA_SIZE),
         * allow for extra space for control data
         * check that the passed size is within admissible boundaries
         * The max data size being ASP of 4576 (8 * ATP_DATA_SIZE),
         * allow for extra space for control data