proc->thread stage 4: rework the VFS and DEVICE subsystems to take thread
authorMatthew Dillon <dillon@dragonflybsd.org>
Wed, 25 Jun 2003 03:56:13 +0000 (03:56 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Wed, 25 Jun 2003 03:56:13 +0000 (03:56 +0000)
pointers instead of process pointers as arguments, similar to what FreeBSD-5
did.  Note however that ultimately both APIs are going to be message-passing
which means the current thread context will not be useable for creds and
descriptor access.

340 files changed:
sbin/vinum/vinumparser.c
sys/bus/pccard/pccard.c
sys/bus/usb/usb.c
sys/dev/agp/agp.c
sys/dev/disk/ata/atapi-cd.c
sys/dev/disk/ccd/ccd.c
sys/dev/disk/fd/fd.c
sys/dev/disk/vn/vn.c
sys/dev/disk/wcd/wd_cd.c
sys/dev/disk/wfd/wfd.c
sys/dev/drm/drm_os_freebsd.h
sys/dev/misc/nmdm/nmdm.c
sys/dev/misc/snp/snp.c
sys/dev/misc/spigot/spigot.c
sys/dev/misc/streams/streams.c
sys/dev/misc/syscons/syscons.c
sys/dev/misc/syscons/sysmouse.c
sys/dev/netif/an/if_an.c
sys/dev/netif/awi/awi.c
sys/dev/netif/awi/awi_wep.c
sys/dev/netif/awi/awi_wicfg.c
sys/dev/netif/cx/cx.c
sys/dev/netif/sbni/if_sbni.c
sys/dev/netif/sbsh/if_sbsh.c
sys/dev/netif/wi/if_wi.c
sys/dev/netif/wi/wi_hostap.c
sys/dev/netif/wl/if_wl.c
sys/dev/raid/aac/aac_linux.c
sys/dev/raid/asr/asr.c
sys/dev/raid/vinum/vinum.c
sys/dev/raid/vinum/vinumparser.c
sys/dev/serial/cy/cy.c
sys/dev/serial/dgb/dgm.c
sys/dev/serial/rc/rc.c
sys/dev/serial/rp/rp.c
sys/dev/serial/rp2/rp.c
sys/dev/serial/si/si.c
sys/dev/serial/sio/sio.c
sys/dev/serial/stl/stallion.c
sys/dev/serial/stli/istallion.c
sys/dev/usbmisc/ucom/ucom.c
sys/dev/usbmisc/ugen/ugen.c
sys/dev/usbmisc/urio/urio.c
sys/dev/video/pcvt/i386/pcvt_drv.c
sys/dev/video/pcvt/i386/pcvt_ext.c
sys/emulation/ibcs2/coff/imgact_coff.c
sys/emulation/ibcs2/i386/ibcs2_fcntl.c
sys/emulation/ibcs2/i386/ibcs2_ioctl.c
sys/emulation/ibcs2/i386/ibcs2_misc.c
sys/emulation/ibcs2/i386/ibcs2_socksys.c
sys/emulation/ibcs2/i386/ibcs2_stat.c
sys/emulation/ibcs2/i386/ibcs2_sysi86.c
sys/emulation/ibcs2/i386/ibcs2_util.c
sys/emulation/ibcs2/i386/ibcs2_xenix.c
sys/emulation/linux/i386/linprocfs/linprocfs.h
sys/emulation/linux/i386/linprocfs/linprocfs_subr.c
sys/emulation/linux/i386/linprocfs/linprocfs_vfsops.c
sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c
sys/emulation/linux/i386/linux.h
sys/emulation/linux/i386/linux_machdep.c
sys/emulation/linux/i386/linux_sysvec.c
sys/emulation/linux/linux_file.c
sys/emulation/linux/linux_getcwd.c
sys/emulation/linux/linux_ioctl.c
sys/emulation/linux/linux_ioctl.h
sys/emulation/linux/linux_mib.c
sys/emulation/linux/linux_mib.h
sys/emulation/linux/linux_misc.c
sys/emulation/linux/linux_socket.c
sys/emulation/linux/linux_stats.c
sys/emulation/linux/linux_uid16.c
sys/emulation/linux/linux_util.c
sys/emulation/linux/linux_util.h
sys/emulation/svr4/svr4_fcntl.c
sys/emulation/svr4/svr4_filio.c
sys/emulation/svr4/svr4_ioctl.c
sys/emulation/svr4/svr4_ioctl.h
sys/emulation/svr4/svr4_misc.c
sys/emulation/svr4/svr4_socket.c
sys/emulation/svr4/svr4_socket.h
sys/emulation/svr4/svr4_sockio.c
sys/emulation/svr4/svr4_stat.c
sys/emulation/svr4/svr4_stream.c
sys/emulation/svr4/svr4_sysvec.c
sys/emulation/svr4/svr4_termios.c
sys/emulation/svr4/svr4_ttold.c
sys/i386/gnu/isa/dgb.c
sys/i386/i386/busdma_machdep.c
sys/i386/i386/machdep.c
sys/i386/i386/mem.c
sys/i386/i386/sys_machdep.c
sys/i386/i386/trap.c
sys/i386/i386/vm86.c
sys/i386/i386/vm_machdep.c
sys/kern/imgact_aout.c
sys/kern/imgact_elf.c
sys/kern/init_main.c
sys/kern/kern_acct.c
sys/kern/kern_acl.c
sys/kern/kern_descrip.c
sys/kern/kern_event.c
sys/kern/kern_exec.c
sys/kern/kern_exit.c
sys/kern/kern_fork.c
sys/kern/kern_jail.c
sys/kern/kern_ktrace.c
sys/kern/kern_linker.c
sys/kern/kern_lock.c
sys/kern/kern_memio.c
sys/kern/kern_mib.c
sys/kern/kern_ntptime.c
sys/kern/kern_prot.c
sys/kern/kern_resource.c
sys/kern/kern_shutdown.c
sys/kern/kern_sig.c
sys/kern/kern_subr.c
sys/kern/kern_synch.c
sys/kern/kern_sysctl.c
sys/kern/kern_time.c
sys/kern/kern_xxx.c
sys/kern/link_aout.c
sys/kern/link_elf.c
sys/kern/subr_prf.c
sys/kern/sys_generic.c
sys/kern/sys_pipe.c
sys/kern/sys_process.c
sys/kern/sys_socket.c
sys/kern/sysv_ipc.c
sys/kern/sysv_msg.c
sys/kern/tty.c
sys/kern/tty_cons.c
sys/kern/tty_pty.c
sys/kern/tty_tty.c
sys/kern/uipc_socket.c
sys/kern/uipc_socket2.c
sys/kern/uipc_syscalls.c
sys/kern/uipc_usrreq.c
sys/kern/vfs_cache.c
sys/kern/vfs_conf.c
sys/kern/vfs_default.c
sys/kern/vfs_lookup.c
sys/kern/vfs_subr.c
sys/kern/vfs_syscalls.c
sys/kern/vfs_vnops.c
sys/kern/vnode_if.src
sys/net/gre/if_gre.c
sys/net/i4b/driver/i4b_ipr.c
sys/net/if.c
sys/net/if.h
sys/net/if_var.h
sys/net/ppp/if_ppp.c
sys/net/ppp/if_pppvar.h
sys/net/ppp_layer/ppp_tty.c
sys/net/raw_usrreq.c
sys/net/route.c
sys/net/route.h
sys/net/rtsock.c
sys/net/sl/if_sl.c
sys/net/tap/if_tap.c
sys/net/tap/if_tapvar.h
sys/net/tun/if_tun.c
sys/netgraph/ksocket/ng_ksocket.c
sys/netgraph/socket/ng_socket.c
sys/netgraph/tty/ng_tty.c
sys/netinet/in.c
sys/netinet/in.h
sys/netinet/in_pcb.c
sys/netinet/in_pcb.h
sys/netinet/in_var.h
sys/netinet/ip_divert.c
sys/netinet/ip_output.c
sys/netinet/raw_ip.c
sys/netinet/tcp_subr.c
sys/netinet/tcp_syncache.c
sys/netinet/tcp_usrreq.c
sys/netinet/udp_usrreq.c
sys/netinet6/in6.c
sys/netinet6/in6_pcb.c
sys/netinet6/in6_src.c
sys/netinet6/ip6_input.c
sys/netinet6/ip6_output.c
sys/netinet6/raw_ip6.c
sys/netinet6/udp6_output.c
sys/netinet6/udp6_usrreq.c
sys/netproto/atalk/at_control.c
sys/netproto/atalk/ddp_usrreq.c
sys/netproto/atm/atm_usrreq.c
sys/netproto/ipx/ipx.c
sys/netproto/ipx/ipx_pcb.c
sys/netproto/ipx/ipx_usrreq.c
sys/netproto/ncp/ncp_conn.c
sys/netproto/ncp/ncp_conn.h
sys/netproto/ncp/ncp_login.c
sys/netproto/ncp/ncp_mod.c
sys/netproto/ncp/ncp_ncp.c
sys/netproto/ncp/ncp_ncp.h
sys/netproto/ncp/ncp_rq.c
sys/netproto/ncp/ncp_rq.h
sys/netproto/ncp/ncp_sock.c
sys/netproto/ncp/ncp_sock.h
sys/netproto/ncp/ncp_subr.c
sys/netproto/ncp/ncp_subr.h
sys/netproto/smb/smb_conn.c
sys/netproto/smb/smb_conn.h
sys/netproto/smb/smb_dev.c
sys/netproto/smb/smb_iod.c
sys/netproto/smb/smb_rq.c
sys/netproto/smb/smb_smb.c
sys/netproto/smb/smb_subr.c
sys/netproto/smb/smb_subr.h
sys/netproto/smb/smb_tran.h
sys/netproto/smb/smb_trantcp.c
sys/opencrypto/cryptodev.c
sys/platform/pc32/gnu/isa/dgb.c
sys/platform/pc32/i386/busdma_machdep.c
sys/platform/pc32/i386/machdep.c
sys/platform/pc32/i386/mem.c
sys/platform/pc32/i386/sys_machdep.c
sys/platform/pc32/i386/trap.c
sys/platform/pc32/i386/vm86.c
sys/platform/pc32/i386/vm_machdep.c
sys/sys/buf2.h
sys/sys/event.h
sys/sys/file.h
sys/sys/filedesc.h
sys/sys/ktrace.h
sys/sys/lock.h
sys/sys/mount.h
sys/sys/namei.h
sys/sys/proc.h
sys/sys/protosw.h
sys/sys/socketvar.h
sys/sys/sysctl.h
sys/sys/systm.h
sys/sys/thread.h
sys/sys/ucred.h
sys/sys/uio.h
sys/sys/vnode.h
sys/vfs/coda/coda_namecache.c
sys/vfs/coda/coda_venus.c
sys/vfs/coda/coda_venus.h
sys/vfs/coda/coda_vfsops.c
sys/vfs/coda/coda_vfsops.h
sys/vfs/coda/coda_vnops.c
sys/vfs/coda/coda_vnops.h
sys/vfs/fdesc/fdesc.h
sys/vfs/fdesc/fdesc_vfsops.c
sys/vfs/fdesc/fdesc_vnops.c
sys/vfs/fifofs/fifo_vnops.c
sys/vfs/gnu/ext2fs/ext2_vnops.c
sys/vfs/hpfs/hpfs_vnops.c
sys/vfs/isofs/cd9660/cd9660_lookup.c
sys/vfs/isofs/cd9660/cd9660_node.c
sys/vfs/isofs/cd9660/cd9660_vfsops.c
sys/vfs/isofs/cd9660/cd9660_vnops.c
sys/vfs/mfs/mfs_extern.h
sys/vfs/mfs/mfs_vfsops.c
sys/vfs/mfs/mfs_vnops.c
sys/vfs/mfs/mfsnode.h
sys/vfs/msdosfs/denode.h
sys/vfs/msdosfs/msdosfs_denode.c
sys/vfs/msdosfs/msdosfs_lookup.c
sys/vfs/msdosfs/msdosfs_vfsops.c
sys/vfs/msdosfs/msdosfs_vnops.c
sys/vfs/nfs/krpc.h
sys/vfs/nfs/nfs.h
sys/vfs/nfs/nfs_bio.c
sys/vfs/nfs/nfs_node.c
sys/vfs/nfs/nfs_nqlease.c
sys/vfs/nfs/nfs_serv.c
sys/vfs/nfs/nfs_socket.c
sys/vfs/nfs/nfs_subs.c
sys/vfs/nfs/nfs_syscalls.c
sys/vfs/nfs/nfs_vfsops.c
sys/vfs/nfs/nfs_vnops.c
sys/vfs/nfs/nfsnode.h
sys/vfs/nfs/nqnfs.h
sys/vfs/ntfs/ntfs_compr.c
sys/vfs/ntfs/ntfs_subr.c
sys/vfs/ntfs/ntfs_vfsops.c
sys/vfs/ntfs/ntfs_vfsops.h
sys/vfs/ntfs/ntfs_vnops.c
sys/vfs/nullfs/null_subr.c
sys/vfs/nullfs/null_vfsops.c
sys/vfs/nullfs/null_vnops.c
sys/vfs/nwfs/nwfs.h
sys/vfs/nwfs/nwfs_io.c
sys/vfs/nwfs/nwfs_ioctl.c
sys/vfs/nwfs/nwfs_node.c
sys/vfs/nwfs/nwfs_node.h
sys/vfs/nwfs/nwfs_subr.c
sys/vfs/nwfs/nwfs_subr.h
sys/vfs/nwfs/nwfs_vfsops.c
sys/vfs/nwfs/nwfs_vnops.c
sys/vfs/portal/portal_vfsops.c
sys/vfs/portal/portal_vnops.c
sys/vfs/procfs/procfs.h
sys/vfs/procfs/procfs_subr.c
sys/vfs/procfs/procfs_vfsops.c
sys/vfs/procfs/procfs_vnops.c
sys/vfs/smbfs/smbfs.h
sys/vfs/smbfs/smbfs_io.c
sys/vfs/smbfs/smbfs_node.c
sys/vfs/smbfs/smbfs_vfsops.c
sys/vfs/smbfs/smbfs_vnops.c
sys/vfs/specfs/spec_vnops.c
sys/vfs/ufs/ffs_balloc.c
sys/vfs/ufs/ffs_extern.h
sys/vfs/ufs/ffs_inode.c
sys/vfs/ufs/ffs_rawread.c
sys/vfs/ufs/ffs_softdep.c
sys/vfs/ufs/ffs_vfsops.c
sys/vfs/ufs/quota.h
sys/vfs/ufs/ufs_extern.h
sys/vfs/ufs/ufs_ihash.c
sys/vfs/ufs/ufs_inode.c
sys/vfs/ufs/ufs_lookup.c
sys/vfs/ufs/ufs_quota.c
sys/vfs/ufs/ufs_readwrite.c
sys/vfs/ufs/ufs_vfsops.c
sys/vfs/ufs/ufs_vnops.c
sys/vfs/ufs/ufsmount.h
sys/vfs/umapfs/umap_subr.c
sys/vfs/umapfs/umap_vfsops.c
sys/vfs/umapfs/umap_vnops.c
sys/vfs/union/union.h
sys/vfs/union/union_subr.c
sys/vfs/union/union_vfsops.c
sys/vfs/union/union_vnops.c
sys/vm/vm_extern.h
sys/vm/vm_fault.c
sys/vm/vm_glue.c
sys/vm/vm_map.c
sys/vm/vm_map.h
sys/vm/vm_mmap.c
sys/vm/vm_object.c
sys/vm/vm_page.c
sys/vm/vm_pageout.c
sys/vm/vm_swap.c
sys/vm/vnode_pager.c

index d2ad452..7dfe04a 100644 (file)
@@ -35,7 +35,7 @@
  *
  * $Id: vinumparser.c,v 1.21 2000/12/20 03:44:13 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumparser.c,v 1.20.2.5 2001/05/28 05:56:27 grog Exp $
- * $DragonFly: src/sbin/vinum/vinumparser.c,v 1.2 2003/06/17 04:28:33 dillon Exp $
+ * $DragonFly: src/sbin/vinum/vinumparser.c,v 1.3 2003/06/25 03:55:50 dillon Exp $
  */
 
 /*
@@ -66,6 +66,7 @@
 #include <machine/setjmp.h>
 /* All this mess for a single struct definition */
 #include <sys/uio.h>
+#include <sys/proc.h>
 #include <sys/namei.h>
 #include <sys/disklabel.h>
 #include <sys/mount.h>
index c34a1da..e0e48d7 100644 (file)
@@ -30,7 +30,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/pccard/pccard.c,v 1.106.2.15 2003/02/26 18:42:00 imp Exp $
- * $DragonFly: src/sys/bus/pccard/pccard.c,v 1.3 2003/06/23 17:55:48 dillon Exp $
+ * $DragonFly: src/sys/bus/pccard/pccard.c,v 1.4 2003/06/25 03:56:09 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -523,7 +523,7 @@ crdioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, d_thread_t *td)
         * At the very least, we only allow root to set the context.
         */
        case PIOCSMEM:
-               if (suser_xxx(td->td_proc->p_ucred, 0))
+               if (suser(td))
                        return (EPERM);
                if (slt->state != filled)
                        return (ENXIO);
@@ -548,7 +548,7 @@ crdioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, d_thread_t *td)
         * Set I/O port context.
         */
        case PIOCSIO:
-               if (suser_xxx(td->td_proc->p_ucred, 0))
+               if (suser(td))
                        return (EPERM);
                if (slt->state != filled)
                        return (ENXIO);
@@ -573,7 +573,7 @@ crdioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, d_thread_t *td)
                        *(unsigned long *)data = pccard_mem;
                        break;
                }
-               if (suser_xxx(td->td_proc->p_ucred, 0))
+               if (suser(td))
                        return (EPERM);
                /*
                 * Validate the memory by checking it against the I/O
@@ -605,7 +605,7 @@ crdioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, d_thread_t *td)
         * Allocate a driver to this slot.
         */
        case PIOCSDRV:
-               if (suser_xxx(td->td_proc->p_ucred, 0))
+               if (suser(td))
                        return (EPERM);
                err = allocate_driver(slt, (struct dev_desc *)data);
                if (!err)
index b7bdfb9..cd6f5c4 100644 (file)
@@ -1,6 +1,6 @@
 /*     $NetBSD: usb.c,v 1.33 1999/11/22 21:57:09 augustss Exp $        */
 /*     $FreeBSD: src/sys/dev/usb/usb.c,v 1.26.2.9 2002/11/13 15:15:22 joe Exp $        */
-/*     $DragonFly: src/sys/bus/usb/usb.c,v 1.3 2003/06/23 17:55:36 dillon Exp $        */
+/*     $DragonFly: src/sys/bus/usb/usb.c,v 1.4 2003/06/25 03:55:50 dillon Exp $        */
 
 /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -468,7 +468,7 @@ usbioctl(dev_t devt, u_long cmd, caddr_t data, int flag, usb_proc_ptr p)
                        uio.uio_rw =
                                ur->ucr_request.bmRequestType & UT_READ ? 
                                UIO_READ : UIO_WRITE;
-                       uio.uio_procp = p->td_proc;
+                       uio.uio_td = p;
                        ptr = malloc(len, M_TEMP, M_WAITOK);
                        if (uio.uio_rw == UIO_WRITE) {
                                error = uiomove(ptr, len, &uio);
index 5ca1cc2..4096a15 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/pci/agp.c,v 1.3.2.4 2002/08/11 19:58:12 alc Exp $
- *     $DragonFly: src/sys/dev/agp/agp.c,v 1.3 2003/06/23 17:55:49 dillon Exp $
+ *     $DragonFly: src/sys/dev/agp/agp.c,v 1.4 2003/06/25 03:56:09 dillon Exp $
  */
 
 #include "opt_bus.h"
@@ -271,7 +271,7 @@ agp_generic_detach(device_t dev)
 {
        struct agp_softc *sc = device_get_softc(dev);
        bus_release_resource(dev, SYS_RES_MEMORY, AGP_APBASE, sc->as_aperture);
-       lockmgr(&sc->as_lock, LK_DRAIN, 0, curproc);
+       lockmgr(&sc->as_lock, LK_DRAIN, 0, curthread); /* XXX */
        destroy_dev(sc->as_devnode);
        agp_flush_cache();
        return 0;
@@ -389,7 +389,7 @@ agp_generic_bind_memory(device_t dev, struct agp_memory *mem,
        vm_page_t m;
        int error;
 
-       lockmgr(&sc->as_lock, LK_EXCLUSIVE, 0, curproc);
+       lockmgr(&sc->as_lock, LK_EXCLUSIVE, 0, curthread); /* XXX */
 
        if (mem->am_is_bound) {
                device_printf(dev, "memory already bound\n");
@@ -452,7 +452,7 @@ agp_generic_bind_memory(device_t dev, struct agp_memory *mem,
                                                           OFF_TO_IDX(k));
                                        vm_page_unwire(m, 0);
                                }
-                               lockmgr(&sc->as_lock, LK_RELEASE, 0, curproc);
+                               lockmgr(&sc->as_lock, LK_RELEASE, 0, curthread); /* XXX */
                                return error;
                        }
                }
@@ -473,7 +473,7 @@ agp_generic_bind_memory(device_t dev, struct agp_memory *mem,
        mem->am_offset = offset;
        mem->am_is_bound = 1;
 
-       lockmgr(&sc->as_lock, LK_RELEASE, 0, curproc);
+       lockmgr(&sc->as_lock, LK_RELEASE, 0, curthread); /* XXX */
 
        return 0;
 }
@@ -485,7 +485,7 @@ agp_generic_unbind_memory(device_t dev, struct agp_memory *mem)
        vm_page_t m;
        int i;
 
-       lockmgr(&sc->as_lock, LK_EXCLUSIVE, 0, curproc);
+       lockmgr(&sc->as_lock, LK_EXCLUSIVE, 0, curthread); /* XXX */
 
        if (!mem->am_is_bound) {
                device_printf(dev, "memory is not bound\n");
@@ -510,7 +510,7 @@ agp_generic_unbind_memory(device_t dev, struct agp_memory *mem)
        mem->am_offset = 0;
        mem->am_is_bound = 0;
 
-       lockmgr(&sc->as_lock, LK_RELEASE, 0, curproc);
+       lockmgr(&sc->as_lock, LK_RELEASE, 0, curthread); /* XXX */
 
        return 0;
 }
index 3da0b35..5cda8fb 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-cd.c,v 1.48.2.20 2002/11/25 05:30:31 njl Exp $
- * $DragonFly: src/sys/dev/disk/ata/atapi-cd.c,v 1.4 2003/06/23 17:55:29 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/atapi-cd.c,v 1.5 2003/06/25 03:55:46 dillon Exp $
  */
 
 #include "opt_ata.h"
@@ -599,7 +599,7 @@ acdioctl(dev_t dev, u_long cmd, caddr_t addr, int flags, struct thread *td)
        break;
 
     case CDIOCRESET:
-       error = suser();
+       error = suser(td);      /* note: if no proc EPERM will be returned */
        if (error)
            break;
        error = atapi_test_ready(cdp->device);
index b8ca9a1..1b432f6 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/dev/ccd/ccd.c,v 1.73.2.1 2001/09/11 09:49:52 kris Exp $ */
-/* $DragonFly: src/sys/dev/disk/ccd/ccd.c,v 1.4 2003/06/23 17:55:30 dillon Exp $ */
+/* $DragonFly: src/sys/dev/disk/ccd/ccd.c,v 1.5 2003/06/25 03:55:47 dillon Exp $ */
 
 /*     $NetBSD: ccd.c,v 1.22 1995/12/08 19:13:26 thorpej Exp $ */
 
@@ -200,8 +200,8 @@ static      void ccdiodone __P((struct ccdbuf *cbp));
 static void ccdstart __P((struct ccd_softc *, struct buf *));
 static void ccdinterleave __P((struct ccd_softc *, int));
 static void ccdintr __P((struct ccd_softc *, struct buf *));
-static int ccdinit __P((struct ccddevice *, char **, struct proc *));
-static int ccdlookup __P((char *, struct proc *p, struct vnode **));
+static int ccdinit __P((struct ccddevice *, char **, struct thread *));
+static int ccdlookup __P((char *, struct thread *td, struct vnode **));
 static void ccdbuffer __P((struct ccdbuf **ret, struct ccd_softc *,
                struct buf *, daddr_t, caddr_t, long));
 static void ccdgetdisklabel __P((dev_t));
@@ -358,10 +358,7 @@ ccd_modevent(mod, type, data)
 DEV_MODULE(ccd, ccd_modevent, NULL);
 
 static int
-ccdinit(ccd, cpaths, p)
-       struct ccddevice *ccd;
-       char **cpaths;
-       struct proc *p;
+ccdinit(struct ccddevice *ccd, char **cpaths, struct thread *td)
 {
        struct ccd_softc *cs = &ccd_softc[ccd->ccd_unit];
        struct ccdcinfo *ci = NULL;     /* XXX */
@@ -374,6 +371,10 @@ ccdinit(ccd, cpaths, p)
        struct ccdgeom *ccg = &cs->sc_geom;
        char tmppath[MAXPATHLEN];
        int error = 0;
+       struct ucred *cred;
+
+       KKASSERT(td->td_proc);
+       cred = td->td_proc->p_ucred;
 
 #ifdef DEBUG
        if (ccddebug & (CCDB_FOLLOW|CCDB_INIT))
@@ -421,7 +422,7 @@ ccdinit(ccd, cpaths, p)
                 * Get partition information for the component.
                 */
                if ((error = VOP_IOCTL(vp, DIOCGPART, (caddr_t)&dpart,
-                   FREAD, p->p_ucred, p)) != 0) {
+                   FREAD, cred, td)) != 0) {
 #ifdef DEBUG
                        if (ccddebug & (CCDB_FOLLOW|CCDB_INIT))
                                 printf("ccd%d: %s: ioctl failed, error = %d\n",
@@ -1253,9 +1254,10 @@ ccdioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)
        struct ccddevice ccd;
        char **cpp;
        struct vnode **vpp;
-       struct proc *p = td->td_proc;
+       struct ucred *cred;
 
-       KKASSERT(p != NULL);
+       KKASSERT(td->td_proc != NULL);
+       cred = td->td_proc->p_ucred;
 
        if (unit >= numccd)
                return (ENXIO);
@@ -1329,10 +1331,10 @@ ccdioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)
                        if (ccddebug & CCDB_INIT)
                                printf("ccdioctl: lookedup = %d\n", lookedup);
 #endif
-                       if ((error = ccdlookup(cpp[i], p, &vpp[i])) != 0) {
+                       if ((error = ccdlookup(cpp[i], td, &vpp[i])) != 0) {
                                for (j = 0; j < lookedup; ++j)
                                        (void)vn_close(vpp[j], FREAD|FWRITE,
-                                           p->p_ucred, p);
+                                           cred, td);
                                free(vpp, M_DEVBUF);
                                free(cpp, M_DEVBUF);
                                ccdunlock(cs);
@@ -1347,10 +1349,10 @@ ccdioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)
                /*
                 * Initialize the ccd.  Fills in the softc for us.
                 */
-               if ((error = ccdinit(&ccd, cpp, p)) != 0) {
+               if ((error = ccdinit(&ccd, cpp, td)) != 0) {
                        for (j = 0; j < lookedup; ++j)
                                (void)vn_close(vpp[j], FREAD|FWRITE,
-                                   p->p_ucred, p);
+                                   cred, td);
                        bzero(&ccd_softc[unit], sizeof(struct ccd_softc));
                        free(vpp, M_DEVBUF);
                        free(cpp, M_DEVBUF);
@@ -1406,7 +1408,7 @@ ccdioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)
                                    cs->sc_cinfo[i].ci_vp);
 #endif
                        (void)vn_close(cs->sc_cinfo[i].ci_vp, FREAD|FWRITE,
-                           p->p_ucred, p);
+                           cred, td);
                        free(cs->sc_cinfo[i].ci_path, M_DEVBUF);
                }
 
@@ -1545,16 +1547,17 @@ ccddump(dev)
  * set *vpp to the file's vnode.
  */
 static int
-ccdlookup(path, p, vpp)
-       char *path;
-       struct proc *p;
-       struct vnode **vpp;     /* result */
+ccdlookup(char *path, struct thread *td, struct vnode **vpp)
 {
        struct nameidata nd;
        struct vnode *vp;
        int error;
+       struct ucred *cred;
+
+       KKASSERT(td->td_proc);
+       cred = td->td_proc->p_ucred;
 
-       NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, path, p);
+       NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, path, td);
        if ((error = vn_open(&nd, FREAD|FWRITE, 0)) != 0) {
 #ifdef DEBUG
                if (ccddebug & CCDB_FOLLOW|CCDB_INIT)
@@ -1577,15 +1580,15 @@ ccdlookup(path, p, vpp)
                vprint("ccdlookup: vnode info", vp);
 #endif
 
-       VOP_UNLOCK(vp, 0, p);
+       VOP_UNLOCK(vp, 0, td);
        NDFREE(&nd, NDF_ONLY_PNBUF);
        *vpp = vp;
        return (0);
 bad:
-       VOP_UNLOCK(vp, 0, p);
+       VOP_UNLOCK(vp, 0, td);
        NDFREE(&nd, NDF_ONLY_PNBUF);
        /* vn_close does vrele() for vp */
-       (void)vn_close(vp, FREAD|FWRITE, p->p_ucred, p);
+       (void)vn_close(vp, FREAD|FWRITE, cred, td);
        return (error);
 }
 
index 9f642b3..dee011f 100644 (file)
@@ -51,7 +51,7 @@
  *
  *     from:   @(#)fd.c        7.4 (Berkeley) 5/25/91
  * $FreeBSD: src/sys/isa/fd.c,v 1.176.2.8 2002/05/15 21:56:14 joerg Exp $
- * $DragonFly: src/sys/dev/disk/fd/fd.c,v 1.4 2003/06/23 17:55:40 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/fd/fd.c,v 1.5 2003/06/25 03:55:56 dillon Exp $
  *
  */
 
@@ -2325,7 +2325,6 @@ fdformat(dev_t dev, struct fd_formb *finfo, struct thread *td)
 static int
 fdioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct thread *td)
 {
-       struct proc *p = td->td_proc;
        fdu_t   fdu = FDUNIT(minor(dev));
        fd_p    fd = devclass_get_softc(fd_devclass, fdu);
        size_t fdblk;
@@ -2396,7 +2395,7 @@ fdioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct thread *td)
 
        case FD_STYPE:                  /* set drive type */
                /* this is considered harmful; only allow for superuser */
-               if (suser_xxx(p->p_ucred, 0) != 0)
+               if (suser(td) != 0)
                        return EPERM;
                *fd->ft = *(struct fd_type *)addr;
                break;
index 56bc8be..1c7d086 100644 (file)
@@ -39,7 +39,7 @@
  *
  *     from: @(#)vn.c  8.6 (Berkeley) 4/1/94
  * $FreeBSD: src/sys/dev/vn/vn.c,v 1.105.2.4 2001/11/18 07:11:00 dillon Exp $
- * $DragonFly: src/sys/dev/disk/vn/vn.c,v 1.3 2003/06/23 17:55:36 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/vn/vn.c,v 1.4 2003/06/25 03:55:51 dillon Exp $
  */
 
 /*
@@ -64,8 +64,8 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
-#include <sys/namei.h>
 #include <sys/proc.h>
+#include <sys/namei.h>
 #include <sys/buf.h>
 #include <sys/malloc.h>
 #include <sys/mount.h>
@@ -385,13 +385,13 @@ vnstrategy(struct buf *bp)
                else
                        auio.uio_rw = UIO_WRITE;
                auio.uio_resid = bp->b_bcount;
-               auio.uio_procp = curproc;
-               vn_lock(vn->sc_vp, LK_EXCLUSIVE | LK_RETRY, curproc);
+               auio.uio_td = curthread;
+               vn_lock(vn->sc_vp, LK_EXCLUSIVE | LK_RETRY, curthread);
                if (bp->b_flags & B_READ)
                        error = VOP_READ(vn->sc_vp, &auio, IO_DIRECT, vn->sc_cred);
                else
                        error = VOP_WRITE(vn->sc_vp, &auio, IO_NOWDRAIN, vn->sc_cred);
-               VOP_UNLOCK(vn->sc_vp, 0, curproc);
+               VOP_UNLOCK(vn->sc_vp, 0, curthread);
                bp->b_resid = auio.uio_resid;
 
                if (error) {
@@ -460,7 +460,7 @@ vnioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
 
     vn_specific:
 
-       error = suser();
+       error = suser(td);
        if (error)
                return (error);
 
@@ -544,25 +544,25 @@ vniocattach_file(vn, vio, dev, flag, td)
        KKASSERT(p != NULL);
 
        flags = FREAD|FWRITE;
-       NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, vio->vn_file, p);
+       NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, vio->vn_file, td);
        error = vn_open(&nd, flags, 0);
        if (error) {
                if (error != EACCES && error != EPERM && error != EROFS)
                        return (error);
                flags &= ~FWRITE;
-               NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, vio->vn_file, p);
+               NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, vio->vn_file, td);
                error = vn_open(&nd, flags, 0);
                if (error)
                        return (error);
        }
        NDFREE(&nd, NDF_ONLY_PNBUF);
        if (nd.ni_vp->v_type != VREG ||
-           (error = VOP_GETATTR(nd.ni_vp, &vattr, p->p_ucred, p))) {
-               VOP_UNLOCK(nd.ni_vp, 0, p);
-               (void) vn_close(nd.ni_vp, flags, p->p_ucred, p);
+           (error = VOP_GETATTR(nd.ni_vp, &vattr, p->p_ucred, td))) {
+               VOP_UNLOCK(nd.ni_vp, 0, td);
+               (void) vn_close(nd.ni_vp, flags, p->p_ucred, td);
                return (error ? error : EINVAL);
        }
-       VOP_UNLOCK(nd.ni_vp, 0, p);
+       VOP_UNLOCK(nd.ni_vp, 0, td);
        vn->sc_secsize = DEV_BSIZE;
        vn->sc_vp = nd.ni_vp;
 
@@ -576,7 +576,7 @@ vniocattach_file(vn, vio, dev, flag, td)
                vn->sc_size = vattr.va_size / vn->sc_secsize;
        error = vnsetcred(vn, p->p_ucred);
        if (error) {
-               (void) vn_close(nd.ni_vp, flags, p->p_ucred, p);
+               (void) vn_close(nd.ni_vp, flags, p->p_ucred, td);
                return(error);
        }
        vn->sc_flags |= VNF_INITED;
@@ -713,9 +713,9 @@ vnsetcred(struct vn_softc *vn, struct ucred *cred)
                auio.uio_rw = UIO_READ;
                auio.uio_segflg = UIO_SYSSPACE;
                auio.uio_resid = aiov.iov_len;
-               vn_lock(vn->sc_vp, LK_EXCLUSIVE | LK_RETRY, curproc);
+               vn_lock(vn->sc_vp, LK_EXCLUSIVE | LK_RETRY, curthread);
                error = VOP_READ(vn->sc_vp, &auio, 0, vn->sc_cred);
-               VOP_UNLOCK(vn->sc_vp, 0, curproc);
+               VOP_UNLOCK(vn->sc_vp, 0, curthread);
                free(tmpbuf, M_TEMP);
        }
        return (error);
@@ -724,7 +724,7 @@ vnsetcred(struct vn_softc *vn, struct ucred *cred)
 void
 vnclear(struct vn_softc *vn)
 {
-       struct proc *p = curproc;               /* XXX */
+       struct thread *td = curthread;          /* XXX */
 
        IFOPT(vn, VN_FOLLOW)
                printf("vnclear(%p): vp=%p\n", vn, vn->sc_vp);
@@ -733,7 +733,7 @@ vnclear(struct vn_softc *vn)
        vn->sc_flags &= ~VNF_INITED;
        if (vn->sc_vp != NULL) {
                (void)vn_close(vn->sc_vp, vn->sc_flags & VNF_READONLY ?
-                   FREAD : (FREAD|FWRITE), vn->sc_cred, p);
+                   FREAD : (FREAD|FWRITE), vn->sc_cred, td);
                vn->sc_vp = NULL;
        }
        vn->sc_flags &= ~VNF_READONLY;
index e0e0212..af28f20 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/wd_cd.c,v 1.29 2000/01/29 16:00:33 peter Exp $
- * $DragonFly: src/sys/dev/disk/wcd/Attic/wd_cd.c,v 1.2 2003/06/17 04:28:37 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/wcd/Attic/wd_cd.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -639,7 +639,7 @@ acdioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct proc *p)
                                0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
 
     case CDIOCRESET:
-        error = suser(p);
+        error = suser(td);
         if (error)
             return (error);
         return acd_request_wait(cdp, ATAPI_TEST_UNIT_READY,
index a6411fe..4faee4c 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/wfd.c,v 1.35 2000/01/29 16:00:33 peter Exp $
- * $DragonFly: src/sys/dev/disk/wfd/Attic/wfd.c,v 1.2 2003/06/17 04:28:37 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/wfd/Attic/wfd.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  */
 
 /*
@@ -631,21 +631,21 @@ int wfdioctl (dev_t dev, u_long cmd, caddr_t addr, int flag, struct proc *p)
                }
        switch (cmd) {
        case CDIOCSETDEBUG:
-               error = suser(p);
+               error = suser(td);
                if (error)
                        return (error);
                t->flags |= F_DEBUG;
                atapi_debug (t->ata, 1);
                return 0;
        case CDIOCCLRDEBUG:
-               error = suser(p);
+               error = suser(td);
                if (error)
                        return (error);
                t->flags &= ~F_DEBUG;
                atapi_debug (t->ata, 0);
                return 0;
        case CDIOCRESET:
-               error = suser(p);
+               error = suser(td);
                if (error)
                        return (error);
                return wfd_request_wait (t, ATAPI_TEST_UNIT_READY,
index cf5d7d5..7a3a9e0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * $FreeBSD: src/sys/dev/drm/drm_os_freebsd.h,v 1.10.2.1 2003/04/26 07:05:28 anholt Exp $
- * $DragonFly: src/sys/dev/drm/Attic/drm_os_freebsd.h,v 1.2 2003/06/17 04:28:24 dillon Exp $
+ * $DragonFly: src/sys/dev/drm/Attic/drm_os_freebsd.h,v 1.3 2003/06/25 03:55:47 dillon Exp $
  */
 #include <sys/param.h>
 #include <sys/queue.h>
 #define DRM_IOCTL_ARGS         dev_t kdev, u_long cmd, caddr_t data, int flags, DRM_STRUCTPROC *p, DRMFILE filp
 #define DRM_LOCK               lockmgr(&dev->dev_lock, LK_EXCLUSIVE, 0, DRM_CURPROC)
 #define DRM_UNLOCK             lockmgr(&dev->dev_lock, LK_RELEASE, 0, DRM_CURPROC)
-#define DRM_SUSER(p)           suser(p)
+#define DRM_SUSER(td)          suser(td)
 #define DRM_TASKQUEUE_ARGS     void *arg, int pending
 #define DRM_IRQ_ARGS           void *arg
 #define DRM_DEVICE             drm_device_t    *dev    = kdev->si_drv1
index a3b5e7a..51b5e8b 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.5.2.1 2001/08/11 00:54:14 mp Exp $
- * $DragonFly: src/sys/dev/misc/nmdm/nmdm.c,v 1.3 2003/06/23 17:55:33 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/nmdm/nmdm.c,v 1.4 2003/06/25 03:55:47 dillon Exp $
  */
 
 /*
@@ -205,7 +205,7 @@ nmdmopen(dev_t dev, int flag, int devtype, struct thread *td)
                tp->t_lflag = TTYDEF_LFLAG;
                tp->t_cflag = TTYDEF_CFLAG;
                tp->t_ispeed = tp->t_ospeed = TTYDEF_SPEED;
-       } else if (tp->t_state & TS_XCLUDE && suser_xxx(p->p_ucred, 0)) {
+       } else if (tp->t_state & TS_XCLUDE && suser(td)) {
                return (EBUSY);
        } else if (pti->pt_prison != p->p_ucred->cr_prison) {
                return (EBUSY);
index 6f3ee7f..45dd933 100644 (file)
@@ -13,7 +13,7 @@
  * Snoop stuff.
  *
  * $FreeBSD: src/sys/dev/snp/snp.c,v 1.69.2.2 2002/05/06 07:30:02 dd Exp $
- * $DragonFly: src/sys/dev/misc/snp/snp.c,v 1.3 2003/06/23 17:55:34 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/snp/snp.c,v 1.4 2003/06/25 03:55:49 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -162,7 +162,7 @@ snplwrite(tp, uio, flag)
                uio2.uio_resid = ilen;
                uio2.uio_segflg = UIO_SYSSPACE;
                uio2.uio_rw = UIO_WRITE;
-               uio2.uio_procp = uio->uio_procp;
+               uio2.uio_td = uio->uio_td;
                error = ttwrite(tp, &uio2, flag);
                if (error != 0)
                        break;
index 1db3afa..df45148 100644 (file)
@@ -43,7 +43,7 @@
  * Version 1.7, December 1995.
  *
  * $FreeBSD: src/sys/i386/isa/spigot.c,v 1.44 2000/01/29 16:17:36 peter Exp $
- * $DragonFly: src/sys/dev/misc/spigot/spigot.c,v 1.2 2003/06/17 04:28:37 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/spigot/spigot.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  *
  */
 
@@ -171,7 +171,7 @@ struct      spigot_softc    *ss = (struct spigot_softc *)&spigot_softc[UNIT(dev)];
         * require sufficient privilege soon and nothing much can be done
         * without them.
         */
-       error = suser(p);
+       error = suser(td);
        if (error != 0)
                return error;
        if (securelevel > 0)
@@ -227,7 +227,7 @@ struct      spigot_info     *info;
                break;
        case    SPIGOT_IOPL_ON: /* allow access to the IO PAGE */
 #if !defined(SPIGOT_UNSECURE)
-               error = suser(p);
+               error = suser(td);
                if (error != 0)
                        return error;
                if (securelevel > 0)
index c03e568..c4c5a81 100644 (file)
@@ -31,7 +31,7 @@
  * in 3.0-980524-SNAP then hacked a bit (but probably not enough :-).
  *
  * $FreeBSD: src/sys/dev/streams/streams.c,v 1.16.2.1 2001/02/26 04:23:07 jlemon Exp $
- * $DragonFly: src/sys/dev/misc/streams/Attic/streams.c,v 1.3 2003/06/23 17:55:35 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/streams/Attic/streams.c,v 1.4 2003/06/25 03:55:49 dillon Exp $
  */
 
 #include <sys/param.h>
 #include <svr4/svr4_stropts.h>
 #include <svr4/svr4_socket.h>
 
-static int svr4_soo_close __P((struct file *, struct proc *));
-static int svr4_ptm_alloc __P((struct proc *));
+static int svr4_soo_close __P((struct file *, struct thread *));
+static int svr4_ptm_alloc __P((struct thread *));
 static  d_open_t       streamsopen;
 
 struct svr4_sockcache_entry {
-       struct proc *p;         /* Process for the socket               */
+       struct thread *td;      /* Thread for the socket                */
        void *cookie;           /* Internal cookie used for matching    */
        struct sockaddr_un sock;/* Pathname for the socket              */
        dev_t dev;              /* Device where the socket lives on     */
@@ -254,7 +254,7 @@ streamsopen(dev_t dev, int oflags, int devtype, d_thread_t *td)
          break;
 
        case dev_ptm:
-         return svr4_ptm_alloc(p);
+         return svr4_ptm_alloc(td);
 
        default:
          return EOPNOTSUPP;
@@ -263,7 +263,7 @@ streamsopen(dev_t dev, int oflags, int devtype, d_thread_t *td)
        if ((error = falloc(p, &fp, &fd)) != 0)
          return error;
 
-       if ((error = socreate(family, &so, type, protocol, p)) != 0) {
+       if ((error = socreate(family, &so, type, protocol, td)) != 0) {
          p->p_fd->fd_ofiles[fd] = 0;
          ffree(fp);
          return error;
@@ -280,8 +280,7 @@ streamsopen(dev_t dev, int oflags, int devtype, d_thread_t *td)
 }
 
 static int
-svr4_ptm_alloc(p)
-       struct proc *p;
+svr4_ptm_alloc(struct thread *td)
 {
        /*
         * XXX this is very, very ugly.  But I can't find a better
@@ -305,6 +304,9 @@ svr4_ptm_alloc(p)
        int l = 0, n = 0;
        register_t fd = -1;
        int error;
+       struct proc *p = td->td_proc;
+
+       KKASSERT(p);
 
        SCARG(&oa, path) = path;
        SCARG(&oa, flags) = O_RDWR;
@@ -364,9 +366,7 @@ svr4_stream_get(fp)
 }
 
 void
-svr4_delete_socket(p, fp)
-       struct proc *p;
-       struct file *fp;
+svr4_delete_socket(struct thread *td, struct file *fp)
 {
        struct svr4_sockcache_entry *e;
        void *cookie = ((struct socket *) fp->f_data)->so_emuldata;
@@ -378,24 +378,25 @@ svr4_delete_socket(p, fp)
        }
 
        for (e = svr4_head.tqh_first; e != NULL; e = e->entries.tqe_next)
-               if (e->p == p && e->cookie == cookie) {
+               if (e->td == td && e->cookie == cookie) {
                        TAILQ_REMOVE(&svr4_head, e, entries);
                        DPRINTF(("svr4_delete_socket: %s [%p,%d,%d]\n",
-                                e->sock.sun_path, p, e->dev, e->ino));
+                                e->sock.sun_path, td, (int)e->dev,
+                                (int)e->ino));
                        free(e, M_TEMP);
                        return;
                }
 }
 
 static int
-svr4_soo_close(struct file *fp, struct proc *p)
+svr4_soo_close(struct file *fp, struct thread *td)
 {
         struct socket *so = (struct socket *)fp->f_data;
        
        /*      CHECKUNIT_DIAG(ENXIO);*/
 
-       svr4_delete_socket(p, fp);
+       svr4_delete_socket(td, fp);
        free(so->so_emuldata, M_TEMP);
-       return soo_close(fp, p);
+       return soo_close(fp, td);
        return (0);
 }
index f597925..169ede8 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/syscons/syscons.c,v 1.336.2.15 2002/10/24 00:35:31 kbyanc Exp $
- * $DragonFly: src/sys/dev/misc/syscons/syscons.c,v 1.3 2003/06/23 17:55:35 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/syscons/syscons.c,v 1.4 2003/06/25 03:55:50 dillon Exp $
  */
 
 #include "splash.h"
@@ -479,7 +479,7 @@ scopen(dev_t dev, int flag, int mode, struct thread *td)
        (*linesw[tp->t_line].l_modem)(tp, 1);
     }
     else
-       if (tp->t_state & TS_XCLUDE && suser_xxx(td->td_proc->p_ucred, 0))
+       if (tp->t_state & TS_XCLUDE && suser(td))
            return(EBUSY);
 
     error = (*linesw[tp->t_line].l_open)(dev, tp);
@@ -642,6 +642,8 @@ scioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
     int s;
     struct proc *p = td->td_proc;
 
+    KKASSERT(p);
+
     tp = dev->si_tty;
 
     /* If there is a user_ioctl function call that first */
@@ -975,7 +977,7 @@ scioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
        return 0;
 
     case KDENABIO:             /* allow io operations */
-       error = suser_xxx(td->td_proc->p_ucred, 0);
+       error = suser(td);
        if (error != 0)
            return error;
        if (securelevel > 0)
index f57101e..08f2d29 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/syscons/sysmouse.c,v 1.2.2.2 2001/07/16 05:21:24 yokota Exp $
- * $DragonFly: src/sys/dev/misc/syscons/sysmouse.c,v 1.3 2003/06/23 17:55:35 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/syscons/sysmouse.c,v 1.4 2003/06/25 03:55:50 dillon Exp $
  */
 
 #include "opt_syscons.h"
@@ -103,7 +103,7 @@ smopen(dev_t dev, int flag, int mode, struct thread *td)
                tp->t_ispeed = tp->t_ospeed = TTYDEF_SPEED;
                smparam(tp, &tp->t_termios);
                (*linesw[tp->t_line].l_modem)(tp, 1);
-       } else if (tp->t_state & TS_XCLUDE && suser_xxx(td->td_proc->p_ucred, 0)) {
+       } else if (tp->t_state & TS_XCLUDE && suser(td)) {
                return EBUSY;
        }
 
index 3418595..2ebbf65 100644 (file)
@@ -30,7 +30,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/an/if_an.c,v 1.2.2.13 2003/02/11 03:32:48 ambrisko Exp $
- * $DragonFly: src/sys/dev/netif/an/if_an.c,v 1.3 2003/06/23 17:55:28 dillon Exp $
+ * $DragonFly: src/sys/dev/netif/an/if_an.c,v 1.4 2003/06/25 03:55:45 dillon Exp $
  *
  * $FreeBSD: src/sys/dev/an/if_an.c,v 1.2.2.13 2003/02/11 03:32:48 ambrisko Exp $
  */
@@ -1851,7 +1851,7 @@ an_ioctl(ifp, command, data)
        int                     i;
        struct an_softc         *sc;
        struct ifreq            *ifr;
-       struct proc             *p = curproc;
+       struct thread           *td = curthread;
        struct ieee80211req     *ireq;
        u_int8_t                tmpstr[IEEE80211_NWID_LEN*2];
        u_int8_t                *tmpptr;
@@ -1917,7 +1917,7 @@ an_ioctl(ifp, command, data)
                        break;
 #ifdef ANCACHE
                if (sc->areq.an_type == AN_RID_ZERO_CACHE) {
-                       error = suser_xxx(p->p_ucred, 0);
+                       error = suser(td);
                        if (error)
                                break;
                        sc->an_sigitems = sc->an_nextitem = 0;
@@ -1941,7 +1941,7 @@ an_ioctl(ifp, command, data)
                error = copyout(&sc->areq, ifr->ifr_data, sizeof(sc->areq));
                break;
        case SIOCSAIRONET:
-               if ((error = suser_xxx(p->p_ucred, 0)))
+               if ((error = suser(td)))
                        goto out;
                error = copyin(ifr->ifr_data, &sc->areq, sizeof(sc->areq));
                if (error != 0)
@@ -1949,7 +1949,7 @@ an_ioctl(ifp, command, data)
                an_setdef(sc, &sc->areq);
                break;
        case SIOCGPRIVATE_0:              /* used by Cisco client utility */
-               if ((error = suser_xxx(p->p_ucred, 0)))
+               if ((error = suser(td)))
                        goto out;
                copyin(ifr->ifr_data, &l_ioctl, sizeof(l_ioctl));
                mode = l_ioctl.command;
@@ -1969,7 +1969,7 @@ an_ioctl(ifp, command, data)
 
                break;
        case SIOCGPRIVATE_1:              /* used by Cisco client utility */
-               if ((error = suser_xxx(p->p_ucred, 0)))
+               if ((error = suser(td)))
                        goto out;
                copyin(ifr->ifr_data, &l_ioctl, sizeof(l_ioctl));
                l_ioctl.command = 0;
@@ -2202,7 +2202,7 @@ an_ioctl(ifp, command, data)
                }
                break;
        case SIOCS80211:
-               if ((error = suser_xxx(p->p_ucred, 0)))
+               if ((error = suser(td)))
                        goto out;
                sc->areq.an_len = sizeof(sc->areq);
                /*
index d82e02d..7294ac0 100644 (file)
@@ -1,6 +1,6 @@
 /*     $NetBSD: awi.c,v 1.26 2000/07/21 04:48:55 onoe Exp $    */
 /* $FreeBSD: src/sys/dev/awi/awi.c,v 1.10.2.2 2003/01/23 21:06:42 sam Exp $ */
-/* $DragonFly: src/sys/dev/netif/awi/Attic/awi.c,v 1.3 2003/06/23 17:55:29 dillon Exp $ */
+/* $DragonFly: src/sys/dev/netif/awi/Attic/awi.c,v 1.4 2003/06/25 03:55:46 dillon Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -455,7 +455,7 @@ awi_ioctl(ifp, cmd, data)
        u_long cmd;
        caddr_t data;
 {
-       struct proc *cur = curproc;
+       struct thread *td = curthread;
        struct awi_softc *sc = ifp->if_softc;
        struct ifreq *ifr = (struct ifreq *)data;
        struct ifaddr *ifa = (struct ifaddr *)data;
@@ -521,7 +521,7 @@ awi_ioctl(ifp, cmd, data)
                break;
        case SIOCS80211NWID:
 #ifdef __FreeBSD__
-               error = suser_xxx(cur->p_ucred, 0);
+               error = suser(td);      /* EPERM if no proc */
                if (error)
                        break;
 #endif
@@ -555,7 +555,7 @@ awi_ioctl(ifp, cmd, data)
                break;
        case SIOCS80211NWKEY:
 #ifdef __FreeBSD__
-               error = suser_xxx(cur->p_ucred, 0);
+               error = suser(td);      /* EPERM if no proc */
                if (error)
                        break;
 #endif
index 773055e..412b46c 100644 (file)
@@ -1,6 +1,6 @@
 /*     $NetBSD: awi_wep.c,v 1.4 2000/08/14 11:28:03 onoe Exp $ */
 /* $FreeBSD: src/sys/dev/awi/awi_wep.c,v 1.3.2.2 2003/01/23 21:06:42 sam Exp $ */
-/* $DragonFly: src/sys/dev/netif/awi/Attic/awi_wep.c,v 1.3 2003/06/23 17:55:29 dillon Exp $ */
+/* $DragonFly: src/sys/dev/netif/awi/Attic/awi_wep.c,v 1.4 2003/06/25 03:55:46 dillon Exp $ */
 
 /*
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -184,7 +184,6 @@ awi_wep_getnwkey(sc, nwkey)
        struct awi_softc *sc;
        struct ieee80211_nwkey *nwkey;
 {
-       struct proc *cur = curproc;
        int i, len, error, suerr;
        u_int8_t keybuf[AWI_MAX_KEYLEN];
 
@@ -192,7 +191,7 @@ awi_wep_getnwkey(sc, nwkey)
        nwkey->i_defkid = sc->sc_wep_defkid + 1;
        /* do not show any keys to non-root user */
 #ifdef __FreeBSD__
-       suerr = suser_xxx(cur->p_ucred, 0);
+       suerr = suser(curthread);       /* note: EPERM if no proc */
 #else
        suerr = suser(curproc->p_ucred, &curproc->p_acflag);
 #endif
index eac279d..3e5a709 100644 (file)
@@ -1,6 +1,6 @@
 /*     $NetBSD: awi_wicfg.c,v 1.3 2000/07/06 17:22:25 onoe Exp $       */
 /* $FreeBSD: src/sys/dev/awi/awi_wicfg.c,v 1.3.2.2 2002/06/18 08:06:15 jhay Exp $ */
-/* $DragonFly: src/sys/dev/netif/awi/Attic/awi_wicfg.c,v 1.3 2003/06/23 17:55:29 dillon Exp $ */
+/* $DragonFly: src/sys/dev/netif/awi/Attic/awi_wicfg.c,v 1.4 2003/06/25 03:55:46 dillon Exp $ */
 
 /*
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -103,7 +103,7 @@ awi_wicfg(ifp, cmd, data)
        caddr_t data;
 {
        int error;
-       struct proc *cur = curproc;
+       struct thread *td = curthread;
 
        switch (cmd) {
        case SIOCGWAVELAN:
@@ -111,7 +111,7 @@ awi_wicfg(ifp, cmd, data)
                break;
        case SIOCSWAVELAN:
 #ifdef __FreeBSD__
-               error = suser_xxx(cur->p_ucred, 0);
+               error = suser(td);      /* note: EPERM if no proc */
 #else
                error = suser(curproc->p_ucred, &curproc->p_acflag);
 #endif
@@ -143,7 +143,7 @@ awi_cfgget(ifp, cmd, data)
        struct wi_sigcache wsc;
        struct awi_bss *bp;
 #endif /* WICACHE */
-       struct proc *cur = curproc;
+       struct thread *td = curthread;
 
        error = copyin(ifr->ifr_data, &wreq, sizeof(wreq));
        if (error)
@@ -276,7 +276,7 @@ awi_cfgget(ifp, cmd, data)
                keys = (struct wi_ltv_keys *)&wreq;
                /* do not show keys to non-root user */
 #ifdef __FreeBSD__
-               error = suser_xxx(cur->p_ucred, 0);
+               error = suser(td);      /* note: EPERM if no proc */
 #else
                error = suser(curproc->p_ucred, &curproc->p_acflag);
 #endif
index ababe59..37958b8 100644 (file)
@@ -16,7 +16,7 @@
  * Version 1.9, Wed Oct  4 18:58:15 MSK 1995
  *
  * $FreeBSD: src/sys/i386/isa/cx.c,v 1.45.2.1 2001/02/26 04:23:09 jlemon Exp $
- * $DragonFly: src/sys/dev/netif/cx/cx.c,v 1.2 2003/06/17 04:28:36 dillon Exp $
+ * $DragonFly: src/sys/dev/netif/cx/cx.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  *
  */
 #undef DEBUG
@@ -114,7 +114,7 @@ static void cxoproc (struct tty *tp);
 static void cxstop (struct tty *tp, int flag);
 static int cxparam (struct tty *tp, struct termios *t);
 
-int cxopen (dev_t dev, int flag, int mode, struct proc *p)
+int cxopen (dev_t dev, int flag, int mode, struct thread *td)
 {
        int unit = UNIT (dev);
        cx_chan_t *c = cxchan[unit];
@@ -165,7 +165,7 @@ int cxopen (dev_t dev, int flag, int mode, struct proc *p)
        tp = c->ttyp;
        tp->t_dev = dev;
        if ((tp->t_state & TS_ISOPEN) && (tp->t_state & TS_XCLUDE) &&
-           suser(p))
+           suser(td))
                return (EBUSY);
        if (! (tp->t_state & TS_ISOPEN)) {
                ttychars (tp);
@@ -250,7 +250,7 @@ int cxopen (dev_t dev, int flag, int mode, struct proc *p)
        return (error);
 }
 
-int cxclose (dev_t dev, int flag, int mode, struct proc *p)
+int cxclose (dev_t dev, int flag, int mode, struct thread *td)
 {
        int unit = UNIT (dev);
        cx_chan_t *c = cxchan[unit];
@@ -286,7 +286,7 @@ int cxclose (dev_t dev, int flag, int mode, struct proc *p)
        return (0);
 }
 
-int cxioctl (dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
+int cxioctl (dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
 {
        int unit = UNIT (dev);
        cx_chan_t *c, *m;
index 3890a9b..ed4abcd 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/sbni/if_sbni.c,v 1.1.2.4 2002/08/11 09:32:00 fjoe Exp $
- * $DragonFly: src/sys/dev/netif/sbni/if_sbni.c,v 1.3 2003/06/23 17:55:34 dillon Exp $
+ * $DragonFly: src/sys/dev/netif/sbni/if_sbni.c,v 1.4 2003/06/25 03:55:48 dillon Exp $
  */
 
 /*
@@ -1050,7 +1050,7 @@ timeout_change_level(struct sbni_softc *sc)
 static int
 sbni_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;  /* XXX */
        struct sbni_softc *sc;
        struct ifreq *ifr;
        struct sbni_in_stats *in_stats;
@@ -1123,7 +1123,7 @@ sbni_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 
        case SIOCSHWFLAGS:      /* set flags */
                /* root only */
-               error = suser_xxx(p->p_ucred, 0);
+               error = suser(td);      /* NOTE: returns EPERM if no proc */
                if (error)
                        break;
                flags = *(struct sbni_flags*)&ifr->ifr_data;
@@ -1145,7 +1145,7 @@ sbni_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
                break;
 
        case SIOCRINSTATS:
-               if (!(error = suser_xxx(p->p_ucred, 0)))        /* root only */
+               if (!(error = suser(td)))       /* root only */
                        bzero(&sc->in_stats, sizeof(struct sbni_in_stats));
                break;
 
index 02edfe9..dca68db 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/sbsh/if_sbsh.c,v 1.3.2.1 2003/04/15 18:15:07 fjoe Exp $
- * $DragonFly: src/sys/dev/netif/sbsh/if_sbsh.c,v 1.3 2003/06/23 17:55:34 dillon Exp $
+ * $DragonFly: src/sys/dev/netif/sbsh/if_sbsh.c,v 1.4 2003/06/25 03:55:48 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -404,17 +404,15 @@ sbsh_ioctl(struct ifnet   *ifp, u_long cmd, caddr_t data)
        struct ifreq            *ifr = (struct ifreq *) data;
        struct cx28975_cfg      cfg;
        struct dsl_stats        ds;
-       struct proc             *p = curproc;
+       struct thread           *td = curthread;
        int                     s, error = 0;
        u_int8_t                t;
 
-       KKASSERT(p != NULL);
-
        s = splimp();
 
        switch(cmd) {
        case SIOCLOADFIRMW:
-               if ((error = suser_xxx(p->p_ucred, 0)) != 0)
+               if ((error = suser(td)) != 0)
                        break;
                if (ifp->if_flags & IFF_UP)
                        error = EBUSY;
@@ -434,7 +432,7 @@ sbsh_ioctl(struct ifnet     *ifp, u_long cmd, caddr_t data)
                break;
 
        case  SIOCGETSTATS :
-               if ((error = suser_xxx(p->p_ucred, 0)) != 0)
+               if ((error = suser(td)) != 0)
                        break;
 
                t = 0;
@@ -468,7 +466,7 @@ sbsh_ioctl(struct ifnet     *ifp, u_long cmd, caddr_t data)
                break;
 
        case  SIOCCLRSTATS :
-               if (!(error = suser_xxx(p->p_ucred, 0))) {
+               if (!(error = suser(td))) {
                        bzero(&sc->in_stats, sizeof(struct sbni16_stats));
                        t = 2;
                        if (issue_cx28975_cmd(sc, _DSL_CLEAR_ERROR_CTRS, &t, 1))
index bab58ec..1a09714 100644 (file)
@@ -30,7 +30,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/wi/if_wi.c,v 1.103.2.2 2002/08/02 07:11:34 imp Exp $
- * $DragonFly: src/sys/dev/netif/wi/if_wi.c,v 1.3 2003/06/23 17:55:37 dillon Exp $
+ * $DragonFly: src/sys/dev/netif/wi/if_wi.c,v 1.4 2003/06/25 03:55:51 dillon Exp $
  */
 
 /*
@@ -1628,11 +1628,7 @@ wi_ioctl(ifp, command, data)
        struct wi_req           wreq;
        struct ifreq            *ifr;
        struct ieee80211req     *ireq;
-#if __FreeBSD_version >= 500000
        struct thread           *td = curthread;
-#else
-       struct proc             *p = curproc;           /* Little white lie */
-#endif
        int                     s;
 
        sc = ifp->if_softc;
@@ -1698,7 +1694,7 @@ wi_ioctl(ifp, command, data)
                        break;
                }
                /* Don't show WEP keys to non-root users. */
-               if (wreq.wi_type == WI_RID_DEFLT_CRYPT_KEYS && suser_xxx(p->p_ucred, 0))
+               if (wreq.wi_type == WI_RID_DEFLT_CRYPT_KEYS && suser(td))
                        break;
                if (wreq.wi_type == WI_RID_IFACE_STATS) {
                        bcopy((char *)&sc->wi_stats, (char *)&wreq.wi_val,
@@ -1743,7 +1739,7 @@ wi_ioctl(ifp, command, data)
                error = copyout(&wreq, ifr->ifr_data, sizeof(wreq));
                break;
        case SIOCSWAVELAN:
-               if ((error = suser_xxx(p->p_ucred, 0)))
+               if ((error = suser(td)))
                        goto out;
                error = copyin(ifr->ifr_data, &wreq, sizeof(wreq));
                if (error)
@@ -1790,7 +1786,7 @@ wi_ioctl(ifp, command, data)
                        error = copyout(&wreq, ifr->ifr_data, sizeof(wreq));
                break;
        case SIOCSPRISM2DEBUG:
-               if ((error = suser_xxx(p->p_ucred, 0)))
+               if ((error = suser(td)))
                        goto out;
                error = copyin(ifr->ifr_data, &wreq, sizeof(wreq));
                if (error)
@@ -1839,7 +1835,7 @@ wi_ioctl(ifp, command, data)
                                break;
                        }
                        len = sc->wi_keys.wi_keys[ireq->i_val].wi_keylen;
-                       if (suser_xxx(p->p_ucred, 0))
+                       if (suser(td))
                                bcopy(sc->wi_keys.wi_keys[ireq->i_val].wi_keydat,
                                    tmpkey, len);
                        else
@@ -1892,7 +1888,7 @@ wi_ioctl(ifp, command, data)
                }
                break;
        case SIOCS80211:
-               if ((error = suser_xxx(p->p_ucred, 0)))
+               if ((error = suser(td)))
                        goto out;
                switch(ireq->i_type) {
                case IEEE80211_IOC_SSID:
index dcee68b..c78aeac 100644 (file)
@@ -30,7 +30,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/wi/wi_hostap.c,v 1.7.2.4 2002/08/02 07:11:34 imp Exp $
- * $DragonFly: src/sys/dev/netif/wi/Attic/wi_hostap.c,v 1.3 2003/06/23 17:55:37 dillon Exp $
+ * $DragonFly: src/sys/dev/netif/wi/Attic/wi_hostap.c,v 1.4 2003/06/25 03:55:51 dillon Exp $
  */
 
 /* This is experimental Host AP software for Prism 2 802.11b interfaces.
@@ -1135,18 +1135,14 @@ wihap_ioctl(struct wi_softc *sc, u_long command, caddr_t data)
        struct hostap_sta       reqsta;
        struct hostap_sta       stabuf;
        int                     s, error = 0, n, flag;
-#if __FreeBSD_version >= 500000
        struct thread           *td = curthread;
-#else
-       struct proc             *proc = curproc;        /* Little white lie */
-#endif
 
        if (!(sc->arpcom.ac_if.if_flags & IFF_RUNNING))
                return ENODEV;
 
        switch (command) {
        case SIOCHOSTAP_DEL:
-               if ((error = suser_xxx(proc->p_ucred, 0)))
+               if ((error = suser(td)))
                        break;
                if ((error = copyin(ifr->ifr_data, &reqsta, sizeof(reqsta))))
                        break;
@@ -1190,7 +1186,7 @@ wihap_ioctl(struct wi_softc *sc, u_long command, caddr_t data)
                break;
 
        case SIOCHOSTAP_ADD:
-               if ((error = suser_xxx(proc->p_ucred, 0)))
+               if ((error = suser(td)))
                        break;
                if ((error = copyin(ifr->ifr_data, &reqsta, sizeof(reqsta))))
                        break;
@@ -1214,7 +1210,7 @@ wihap_ioctl(struct wi_softc *sc, u_long command, caddr_t data)
                break;
 
        case SIOCHOSTAP_SFLAGS:
-               if ((error = suser_xxx(proc->p_ucred, 0)))
+               if ((error = suser(td)))
                        break;
                if ((error = copyin(ifr->ifr_data, &flag, sizeof(int))))
                        break;
index 3e9abaa..581c12c 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/i386/isa/if_wl.c,v 1.27.2.2 2000/07/17 21:24:32 archie Exp $ */
-/* $DragonFly: src/sys/dev/netif/wl/if_wl.c,v 1.2 2003/06/17 04:28:37 dillon Exp $ */
+/* $DragonFly: src/sys/dev/netif/wl/if_wl.c,v 1.3 2003/06/25 03:55:54 dillon Exp $ */
 /* 
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -1139,10 +1139,10 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
     short              base = sc->base;
     short              mode = 0;
     int                        opri, error = 0;
-    struct proc                *p = curproc;   /* XXX */
     int                        irq, irqval, i, isroot, size;
     caddr_t            up;
     char *             cpt;
+    struct thread *td = curthread; /* XXX */
        
 
 #ifdef WLDEBUG
@@ -1246,7 +1246,7 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        /* pointer to buffer in user space */
        up = (void *)ifr->ifr_data;
        /* work out if they're root */
-       isroot = (suser(p) == 0);
+       isroot = (suser(td) == 0);
        
        for (i = 0; i < 0x40; i++) {
            /* don't hand the DES key out to non-root users */
@@ -1261,7 +1261,7 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        /* copy the PSA in from the caller; we only copy _some_ values */
     case SIOCSWLPSA:
        /* root only */
-       if ((error = suser(p)))
+       if ((error = suser(td)))
            break;
        error = EINVAL; /* assume the worst */
        /* pointer to buffer in user space containing data */
@@ -1315,7 +1315,7 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
         */
     case SIOCSWLCNWID:
        /* root only */
-       if ((error = suser(p)))
+       if ((error = suser(td)))
            break;
        if (!(ifp->if_flags & IFF_UP)) {
            error = EIO;        /* only allowed while up */
@@ -1333,7 +1333,7 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        /* copy the EEPROM in 2.4 Gz WaveMODEM  out to the caller */
     case SIOCGWLEEPROM:
        /* root only */
-       if ((error = suser(p)))
+       if ((error = suser(td)))
            break;
        /* pointer to buffer in user space */
        up = (void *)ifr->ifr_data;
@@ -1356,7 +1356,7 @@ wlioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
        /* zero (Delete) the wl cache */
     case SIOCDWLCACHE:
        /* root only */
-       if ((error = suser(p)))
+       if ((error = suser(td)))
            break;
        wl_cache_zero(unit);
        break;
index 94db4f2..10e2a35 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/aac/aac_linux.c,v 1.1.4.1 2003/03/28 19:50:17 scottl Exp $
- *     $DragonFly: src/sys/dev/raid/aac/aac_linux.c,v 1.2 2003/06/17 04:28:21 dillon Exp $
+ *     $DragonFly: src/sys/dev/raid/aac/aac_linux.c,v 1.3 2003/06/25 03:55:45 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -36,6 +36,7 @@
 #include <sys/kernel.h>
 #include <sys/file.h>
 #include <sys/proc.h>
+#include <sys/file2.h>
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
 #include <compat/linux/linux_ioctl.h>
@@ -65,17 +66,20 @@ DEV_MODULE(aac_linux, aac_linux_modevent, NULL);
 MODULE_DEPEND(aac, linux, 1, 1, 1);
 
 static int
-aac_linux_ioctl(struct proc *p, struct linux_ioctl_args *args)
+aac_linux_ioctl(struct thread *td, struct linux_ioctl_args *args)
 {
+       struct proc *p = td->td_proc;
        struct file *fp;
        u_long cmd;
 
+       KKASSERT(p);
+
        fp = p->p_fd->fd_ofiles[args->fd];
        cmd = args->cmd;
 
        /*
         * Pass the ioctl off to our standard handler.
         */
-       return(fo_ioctl(fp, cmd, (caddr_t)args->arg, p));
+       return(fo_ioctl(fp, cmd, (caddr_t)args->arg, td));
 }
 
index f26e224..a4d14b0 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/dev/asr/asr.c,v 1.3.2.2 2001/08/23 05:21:29 scottl Exp $ */
-/* $DragonFly: src/sys/dev/raid/asr/asr.c,v 1.4 2003/06/23 18:11:59 dillon Exp $ */
+/* $DragonFly: src/sys/dev/raid/asr/asr.c,v 1.5 2003/06/25 03:55:46 dillon Exp $ */
 /*
  * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
  * Copyright (c) 2000-2001 Adaptec Corporation
@@ -3882,10 +3882,11 @@ asr_open(
         if (ASR_get_sc (dev) == (Asr_softc_t *)NULL) {
                 return (ENODEV);
         }
+       KKASSERT(td->td_proc);
         s = splcam ();
         if (ASR_ctlr_held) {
                 error = EBUSY;
-        } else if ((error = suser_xxx(td->td_proc->p_ucred, 0)) == 0) {
+        } else if ((error = suser_cred(td->td_proc->p_ucred, 0)) == 0) {
                 ++ASR_ctlr_held;
         }
         splx(s);
index b738856..5dc2eb0 100644 (file)
@@ -37,7 +37,7 @@
  *
  * $Id: vinum.c,v 1.33 2001/01/09 06:19:15 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinum.c,v 1.38.2.3 2003/01/07 12:14:16 joerg Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinum.c,v 1.3 2003/06/23 17:55:36 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/vinum/vinum.c,v 1.4 2003/06/25 03:55:50 dillon Exp $
  */
 
 #define STATIC static                                      /* nothing while we're testing XXX */
@@ -301,9 +301,6 @@ vinumopen(dev_t dev, int flags, int fmt, d_thread_t *td)
     struct plex *plex;
     struct sd *sd;
     int devminor;                                          /* minor number */
-    struct proc *p = td->td_proc;
-
-    KKASSERT(p != NULL);
 
     devminor = minor(dev);
     error = 0;
@@ -381,7 +378,7 @@ vinumopen(dev_t dev, int flags, int fmt, d_thread_t *td)
        }
 
     case VINUM_SUPERDEV_TYPE:
-       error = suser_xxx(p->p_ucred, 0);                   /* are we root? */
+       error = suser(td);                  /* are we root? */
        if (error == 0) {                                   /* yes, can do */
            if (devminor == VINUM_DAEMON_DEV)               /* daemon device */
                vinum_conf.flags |= VF_DAEMONOPEN;          /* we're open */
index bc2402c..5cc380a 100644 (file)
@@ -35,7 +35,7 @@
  *
  * $Id: vinumparser.c,v 1.21 2000/12/20 03:44:13 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumparser.c,v 1.20.2.5 2001/05/28 05:56:27 grog Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinumparser.c,v 1.2 2003/06/17 04:28:33 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/vinum/vinumparser.c,v 1.3 2003/06/25 03:55:50 dillon Exp $
  */
 
 /*
@@ -66,6 +66,7 @@
 #include <machine/setjmp.h>
 /* All this mess for a single struct definition */
 #include <sys/uio.h>
+#include <sys/proc.h>
 #include <sys/namei.h>
 #include <sys/disklabel.h>
 #include <sys/mount.h>
index 0bed4d1..b0ebe42 100644 (file)
@@ -28,7 +28,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/cy.c,v 1.97.2.2 2001/08/22 13:04:58 bde Exp $
- * $DragonFly: src/sys/dev/serial/cy/cy.c,v 1.2 2003/06/17 04:28:37 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/cy/cy.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  */
 
 #include "opt_compat.h"
@@ -652,11 +652,7 @@ cyattach_common(cy_iobase, cy_align)
 }
 
 static int
-sioopen(dev, flag, mode, p)
-       dev_t           dev;
-       int             flag;
-       int             mode;
-       struct proc     *p;
+sioopen(dev_t dev; int flag; int mode; struct thread *td)
 {
        struct com_s    *com;
        int             error;
@@ -712,7 +708,7 @@ open_top:
                        }
                }
                if (tp->t_state & TS_XCLUDE &&
-                   suser(p)) {
+                   suser(td)) {
                        error = EBUSY;
                        goto out;
                }
@@ -837,11 +833,7 @@ out:
 }
 
 static int
-sioclose(dev, flag, mode, p)
-       dev_t           dev;
-       int             flag;
-       int             mode;
-       struct proc     *p;
+sioclose(dev_t dev, int flag, int mode, struct thread *td)
 {
        struct com_s    *com;
        int             mynor;
@@ -1568,12 +1560,7 @@ siointr1(com)
 #endif
 
 static int
-sioioctl(dev, cmd, data, flag, p)
-       dev_t           dev;
-       u_long          cmd;
-       caddr_t         data;
-       int             flag;
-       struct proc     *p;
+sioioctl(dev_t dev, u_long cmd, caddr_t        data, int flag, struct thread *td)
 {
        struct com_s    *com;
        int             error;
@@ -1602,7 +1589,7 @@ sioioctl(dev, cmd, data, flag, p)
                }
                switch (cmd) {
                case TIOCSETA:
-                       error = suser(p);
+                       error = suser(td);
                        if (error != 0)
                                return (error);
                        *ct = *(struct termios *)data;
@@ -1701,7 +1688,7 @@ sioioctl(dev, cmd, data, flag, p)
                break;
        case TIOCMSDTRWAIT:
                /* must be root since the wait applies to following logins */
-               error = suser(p);
+               error = suser(td);
                if (error != 0) {
                        splx(s);
                        return (error);
index 2060bc8..616771a 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * $FreeBSD: src/sys/dev/dgb/dgm.c,v 1.31.2.3 2001/10/07 09:02:25 brian Exp $
- * $DragonFly: src/sys/dev/serial/dgb/dgm.c,v 1.2 2003/06/17 04:28:23 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/dgb/dgm.c,v 1.3 2003/06/25 03:55:47 dillon Exp $
  *
  *  This driver and the associated header files support the ISA PC/Xem
  *  Digiboards.  Its evolutionary roots are described below.
@@ -920,7 +920,7 @@ dgmshutdown(device_t dev)
 
 /* ARGSUSED */
 static int
-dgmopen(dev_t dev, int flag, int mode, struct proc *p)
+dgmopen(dev_t dev, int flag, int mode, struct thread *td)
 {
        struct dgm_softc *sc;
        struct tty *tp;
@@ -1008,7 +1008,7 @@ open_top:
                        splx(s);
                        goto open_top;
                }
-               if (tp->t_state & TS_XCLUDE && suser(p)) {
+               if (tp->t_state & TS_XCLUDE && suser(td)) {
                        error = EBUSY;
                        goto out;
                }
@@ -1102,7 +1102,7 @@ out:
 
 /*ARGSUSED*/
 static int
-dgmclose(dev_t dev, int flag, int mode, struct proc *p)
+dgmclose(dev_t dev, int flag, int mode, struct thread *td)
 {
        int             mynor;
        struct tty      *tp;
@@ -1476,7 +1476,7 @@ dgmpoll(void *unit_c)
 }
 
 static int
-dgmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
+dgmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
 {
        struct dgm_softc *sc;
        int unit, pnum;
@@ -1519,7 +1519,7 @@ dgmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
                }
                switch (cmd) {
                case TIOCSETA:
-                       error = suser(p);
+                       error = suser(td);
                        if (error != 0)
                                return (error);
                        *ct = *(struct termios *)data;
@@ -1741,7 +1741,7 @@ dgmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
                break;
        case TIOCMSDTRWAIT:
                /* must be root since the wait applies to following logins */
-               error = suser(p);
+               error = suser(td);
                if (error != 0) {
                        splx(s);
                        return (error);
index 9527a4f..565d462 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/rc.c,v 1.53.2.1 2001/02/26 04:23:10 jlemon Exp $
- * $DragonFly: src/sys/dev/serial/rc/rc.c,v 1.2 2003/06/17 04:28:37 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/rc/rc.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  *
  */
 
@@ -761,7 +761,7 @@ again:
                        }
                }
                if (tp->t_state & TS_XCLUDE &&
-                   suser(p)) {
+                   suser(td)) {
                        error = EBUSY;
                        goto out;
                }
@@ -1115,7 +1115,7 @@ struct proc     *p;
                break;
 
            case TIOCMSDTRWAIT:
-               error = suser(p);
+               error = suser(td);
                if (error != 0) {
                        splx(s);
                        return (error);
index 18681ec..bf85046 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/rp/rp.c,v 1.45.2.2 2002/11/07 22:26:59 tegge Exp $
- * $DragonFly: src/sys/dev/serial/rp/rp.c,v 1.3 2003/06/23 17:55:33 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/rp/rp.c,v 1.4 2003/06/25 03:55:48 dillon Exp $
  */
 
 /* 
@@ -963,9 +963,6 @@ rpopen(dev_t dev, int flag, int mode, d_thread_t *td)
        struct  tty     *tp;
        int     oldspl, error;
        unsigned int    IntMask, ChanStatus;
-       struct proc *p = td->td_proc;
-
-       KKASSERT(p != NULL);
 
    umynor = (((minor(dev) >> 16) -1) * 32);    /* SG */
        port  = (minor(dev) & 0x1f);                /* SG */
@@ -1009,7 +1006,7 @@ open_top:
                                goto open_top;
                        }
                }
-               if(tp->t_state & TS_XCLUDE && suser_xxx(p->p_ucred, 0) != 0) {
+               if(tp->t_state & TS_XCLUDE && suser(td) != 0) {
                        splx(oldspl);
                        error = EBUSY;
                        goto out2;
@@ -1236,9 +1233,6 @@ rpioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)
        int     error = 0;
        int     arg, flags, result, ChanStatus;
        struct  termios *t;
-       struct proc *p = td->td_proc;
-
-       KKASSERT(p != NULL);
 
    umynor = (((minor(dev) >> 16) -1) * 32);    /* SG */
        port  = (minor(dev) & 0x1f);                /* SG */
@@ -1261,7 +1255,7 @@ rpioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)
                }
                switch (cmd) {
                case TIOCSETA:
-                       error = suser_xxx(p->p_ucred, 0);
+                       error = suser(td);
                        if(error != 0)
                                return(error);
                        *ct = *(struct termios *)data;
@@ -1406,7 +1400,7 @@ rpioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)
                *(int *)data = result;
                break;
        case TIOCMSDTRWAIT:
-               error = suser_xxx(p->p_ucred, 0);
+               error = suser(td);
                if(error != 0) {
                        splx(oldspl);
                        return(error);
index 17ff0a9..c95e538 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/rp.c,v 1.33.2.2 2001/02/26 04:23:10 jlemon Exp $
- * $DragonFly: src/sys/dev/serial/rp2/Attic/rp.c,v 1.2 2003/06/17 04:28:37 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/rp2/Attic/rp.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  */
 
 /* 
@@ -1333,7 +1333,7 @@ open_top:
                        }
                }
                if(tp->t_state & TS_XCLUDE &&
-                   suser(p)) {
+                   suser(td)) {
                        splx(oldspl);
                        return(EBUSY);
                }
@@ -1582,7 +1582,7 @@ rpioctl(dev, cmd, data, flag, p)
                }
                switch (cmd) {
                case TIOCSETA:
-                       error = suser(p);
+                       error = suser(td);
                        if(error != 0)
                                return(error);
                        *ct = *(struct termios *)data;
@@ -1727,7 +1727,7 @@ rpioctl(dev, cmd, data, flag, p)
                *(int *)data = result;
                break;
        case TIOCMSDTRWAIT:
-               error = suser(p);
+               error = suser(td);
                if(error != 0) {
                        splx(oldspl);
                        return(error);
index 9001397..628bbb4 100644 (file)
@@ -31,7 +31,7 @@
  * NO EVENT SHALL THE AUTHORS BE LIABLE.
  *
  * $FreeBSD: src/sys/dev/si/si.c,v 1.101.2.1 2001/02/26 04:23:06 jlemon Exp $
- * $DragonFly: src/sys/dev/serial/si/si.c,v 1.2 2003/06/17 04:28:29 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/si/si.c,v 1.3 2003/06/25 03:55:49 dillon Exp $
  */
 
 #ifndef lint
@@ -96,7 +96,7 @@ enum si_mctl { GET, SET, BIS, BIC };
 static void si_command(struct si_port *, int, int);
 static int si_modem(struct si_port *, enum si_mctl, int);
 static void si_write_enable(struct si_port *, int);
-static int si_Sioctl(dev_t, u_long, caddr_t, int, struct proc *);
+static int si_Sioctl(dev_t, u_long, caddr_t, int, struct thread *);
 static void si_start(struct tty *);
 static void si_stop(struct tty *, int);
 static timeout_t si_lstart;
@@ -613,7 +613,7 @@ try_next2:
 }
 
 static int
-siopen(dev_t dev, int flag, int mode, struct proc *p)
+siopen(dev_t dev, int flag, int mode, struct thread *td)
 {
        int oldspl, error;
        int card, port;
@@ -625,7 +625,7 @@ siopen(dev_t dev, int flag, int mode, struct proc *p)
 
        /* quickly let in /dev/si_control */
        if (IS_CONTROLDEV(mynor)) {
-               if ((error = suser(p)))
+               if ((error = suser(td)))
                        return(error);
                return(0);
        }
@@ -668,7 +668,7 @@ siopen(dev_t dev, int flag, int mode, struct proc *p)
        dev->si_tty = tp;
        ccbp = pp->sp_ccb;                      /* Find control block */
        DPRINT((pp, DBG_ENTRY|DBG_OPEN, "siopen(%s,%x,%x,%x)\n",
-               devtoname(dev), flag, mode, p));
+               devtoname(dev), flag, mode, td));
 
        oldspl = spltty();                      /* Keep others out */
        error = 0;
@@ -704,7 +704,7 @@ open_top:
                        }
                }
                if (tp->t_state & TS_XCLUDE &&
-                   suser(p)) {
+                   suser(td)) {
                        DPRINT((pp, DBG_OPEN|DBG_FAIL,
                                "already open and EXCLUSIVE set\n"));
                        error = EBUSY;
@@ -782,7 +782,7 @@ out:
 }
 
 static int
-siclose(dev_t dev, int flag, int mode, struct proc *p)
+siclose(dev_t dev, int flag, int mode, struct thread *td)
 {
        struct si_port *pp;
        struct tty *tp;
@@ -933,7 +933,7 @@ out:
 
 
 static int
-siioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
+siioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
 {
        struct si_port *pp;
        struct tty *tp;
@@ -969,7 +969,7 @@ siioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
                }
                switch (cmd) {
                case TIOCSETA:
-                       error = suser(p);
+                       error = suser(td);
                        if (error != 0)
                                return (error);
                        *ct = *(struct termios *)data;
@@ -1082,7 +1082,7 @@ siioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
                break;
        case TIOCMSDTRWAIT:
                /* must be root since the wait applies to following logins */
-               error = suser(p);
+               error = suser(td);
                if (error == 0)
                        pp->sp_dtr_wait = *(int *)data * hz / 100;
                break;
@@ -1105,7 +1105,7 @@ out:
  * Handle the Specialix ioctls. All MUST be called via the CONTROL device
  */
 static int
-si_Sioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
+si_Sioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
 {
        struct si_softc *xsc;
        struct si_port *xpp;
@@ -1135,7 +1135,7 @@ si_Sioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
 
        ip = (int *)data;
 
-#define SUCHECK if ((error = suser(p))) goto out
+#define SUCHECK if ((error = suser(td))) goto out
 
        switch (cmd) {
        case TCSIPORTS:
index ad9dc8b..b1cc8b9 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/sio.c,v 1.291.2.35 2003/05/18 08:51:15 murray Exp $
- * $DragonFly: src/sys/dev/serial/sio/sio.c,v 1.3 2003/06/23 17:55:40 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/sio/sio.c,v 1.4 2003/06/25 03:55:56 dillon Exp $
  *     from: @(#)com.c 7.5 (Berkeley) 5/16/91
  *     from: i386/isa sio.c,v 1.234
  */
@@ -1519,8 +1519,7 @@ open_top:
                                goto open_top;
                        }
                }
-               if (tp->t_state & TS_XCLUDE &&
-                   suser_xxx(td->td_proc->p_ucred, 0)) {
+               if (tp->t_state & TS_XCLUDE && suser(td)) {
                        error = EBUSY;
                        goto out;
                }
@@ -2225,7 +2224,7 @@ sioioctl(dev_t dev, u_long cmd, caddr_t   data, int flag, struct thread *td)
                }
                switch (cmd) {
                case TIOCSETA:
-                       error = suser_xxx(td->td_proc->p_ucred, 0);
+                       error = suser(td);
                        if (error != 0)
                                return (error);
                        *ct = *(struct termios *)data;
@@ -2316,7 +2315,7 @@ sioioctl(dev_t dev, u_long cmd, caddr_t   data, int flag, struct thread *td)
                break;
        case TIOCMSDTRWAIT:
                /* must be root since the wait applies to following logins */
-               error = suser_xxx(td->td_proc->p_ucred, 0);
+               error = suser(td);
                if (error != 0) {
                        splx(s);
                        return (error);
index 51db5b8..77113a4 100644 (file)
@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/stallion.c,v 1.39.2.2 2001/08/30 12:29:57 murray Exp $
- * $DragonFly: src/sys/dev/serial/stl/stallion.c,v 1.2 2003/06/17 04:28:37 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/stl/stallion.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  */
 
 /*****************************************************************************/
@@ -1231,7 +1231,7 @@ stlopen_restart:
                                goto stlopen_restart;
                        }
                }
-               if ((tp->t_state & TS_XCLUDE) && suser(p)) {
+               if ((tp->t_state & TS_XCLUDE) && suser(td)) {
                        error = EBUSY;
                        goto stlopen_end;
                }
@@ -1371,7 +1371,7 @@ STATIC int stlioctl(dev_t dev, unsigned long cmd, caddr_t data, int flag,
 
                switch (cmd) {
                case TIOCSETA:
-                       if ((error = suser(p)) == 0)
+                       if ((error = suser(td)) == 0)
                                *localtios = *((struct termios *) data);
                        break;
                case TIOCGETA:
@@ -1489,7 +1489,7 @@ STATIC int stlioctl(dev_t dev, unsigned long cmd, caddr_t data, int flag,
                *((int *) data) = (stl_getsignals(portp) | TIOCM_LE);
                break;
        case TIOCMSDTRWAIT:
-               if ((error = suser(p)) == 0)
+               if ((error = suser(td)) == 0)
                        portp->dtrwait = *((int *) data) * hz / 100;
                break;
        case TIOCMGDTRWAIT:
index 5219089..6886123 100644 (file)
@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/istallion.c,v 1.36.2.2 2001/08/30 12:29:57 murray Exp $
- * $DragonFly: src/sys/dev/serial/stli/istallion.c,v 1.2 2003/06/17 04:28:37 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/stli/istallion.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  */
 
 /*****************************************************************************/
@@ -1014,7 +1014,7 @@ stliopen_restart:
                        }
                }
                if ((tp->t_state & TS_XCLUDE) &&
-                   suser(p)) {
+                   suser(td)) {
                        error = EBUSY;
                        goto stliopen_end;
                }
@@ -1200,7 +1200,7 @@ STATIC int stliioctl(dev_t dev, unsigned long cmd, caddr_t data, int flag,
 
                switch (cmd) {
                case TIOCSETA:
-                       if ((error = suser(p)) == 0)
+                       if ((error = suser(td)) == 0)
                                *localtios = *((struct termios *) data);
                        break;
                case TIOCGETA:
@@ -1336,7 +1336,7 @@ STATIC int stliioctl(dev_t dev, unsigned long cmd, caddr_t data, int flag,
                *((int *) data) = (portp->sigs | TIOCM_LE);
                break;
        case TIOCMSDTRWAIT:
-               if ((error = suser(p)) == 0)
+               if ((error = suser(td)) == 0)
                        portp->dtrwait = *((int *) data) * hz / 100;
                break;
        case TIOCMGDTRWAIT:
index a130d5c..d3f6895 100644 (file)
@@ -1,6 +1,6 @@
 /*     $NetBSD: ucom.c,v 1.39 2001/08/16 22:31:24 augustss Exp $       */
 /*     $FreeBSD: src/sys/dev/usb/ucom.c,v 1.24.2.2 2003/01/17 17:32:10 joe Exp $       */
-/*     $DragonFly: src/sys/dev/usbmisc/ucom/ucom.c,v 1.3 2003/06/23 17:55:36 dillon Exp $      */
+/*     $DragonFly: src/sys/dev/usbmisc/ucom/ucom.c,v 1.4 2003/06/25 03:55:50 dillon Exp $      */
 
 /*-
  * Copyright (c) 2001-2002, Shunsuke Akiyama <akiyama@jp.FreeBSD.org>.
@@ -267,7 +267,6 @@ ucomopen(dev_t dev, int flag, int mode, usb_proc_ptr td)
        struct tty *tp;
        int s;
        int error;
-       struct proc *p = td->td_proc;
 
        KKASSERT(p != NULL);
 
@@ -282,8 +281,10 @@ ucomopen(dev_t dev, int flag, int mode, usb_proc_ptr td)
 
        if (ISSET(tp->t_state, TS_ISOPEN) &&
            ISSET(tp->t_state, TS_XCLUDE) &&
-           suser_xxx(p->p_ucred, 0))
+           suser(td)
+       ) {
                return (EBUSY);
+       }
 
        /*
         * Do the following iff this is a first open.
index 207f2f5..a7c9f0b 100644 (file)
@@ -1,6 +1,6 @@
 /*     $NetBSD: ugen.c,v 1.27 1999/10/28 12:08:38 augustss Exp $       */
 /*     $FreeBSD: src/sys/dev/usb/ugen.c,v 1.38.2.9 2002/11/06 14:41:01 joe Exp $       */
-/*     $DragonFly: src/sys/dev/usbmisc/ugen/ugen.c,v 1.3 2003/06/23 17:55:36 dillon Exp $      */
+/*     $DragonFly: src/sys/dev/usbmisc/ugen/ugen.c,v 1.4 2003/06/25 03:55:50 dillon Exp $      */
 
 /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -1213,7 +1213,7 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd,
                uio.uio_offset = 0;
                uio.uio_segflg = UIO_USERSPACE;
                uio.uio_rw = UIO_READ;
-               uio.uio_procp = p->td_proc;
+               uio.uio_td = p;
 #if defined(__NetBSD__) || defined(__OpenBSD__)
                error = uiomove((caddr_t)cdesc, len, &uio);
 #elif defined(__FreeBSD__)
@@ -1263,7 +1263,7 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd,
                        uio.uio_rw =
                                ur->ucr_request.bmRequestType & UT_READ ? 
                                UIO_READ : UIO_WRITE;
-                       uio.uio_procp = p->td_proc;
+                       uio.uio_td = p;
                        ptr = malloc(len, M_TEMP, M_WAITOK);
                        if (uio.uio_rw == UIO_WRITE) {
                                error = uiomove(ptr, len, &uio);
index f09dd53..450b4f4 100644 (file)
@@ -29,7 +29,7 @@
  */
 
 /* $FreeBSD: src/sys/dev/usb/urio.c,v 1.11.2.4 2002/11/06 14:41:01 joe Exp $ */
-/* $DragonFly: src/sys/dev/usbmisc/urio/urio.c,v 1.3 2003/06/23 17:55:36 dillon Exp $ */
+/* $DragonFly: src/sys/dev/usbmisc/urio/urio.c,v 1.4 2003/06/25 03:55:50 dillon Exp $ */
 
 /*
  * 2000/3/24  added NetBSD/OpenBSD support (from Alex Nemirovsky)
@@ -572,7 +572,7 @@ urioioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, usb_proc_ptr p)
                uio.uio_rw =
                        req.bmRequestType & UT_READ ? 
                        UIO_READ : UIO_WRITE;
-               uio.uio_procp = p->td_proc;
+               uio.uio_td = p;
                ptr = malloc(len, M_TEMP, M_WAITOK);
                if (uio.uio_rw == UIO_WRITE) {
                        error = uiomove(ptr, len, &uio);
index 28c05b4..770a369 100644 (file)
@@ -51,7 +51,7 @@
  *     Last Edit-Date: [Mon Dec 27 14:03:36 1999]
  *
  * $FreeBSD: src/sys/i386/isa/pcvt/pcvt_drv.c,v 1.63.2.1 2001/02/26 04:23:13 jlemon Exp $
- * $DragonFly: src/sys/dev/video/pcvt/i386/Attic/pcvt_drv.c,v 1.2 2003/06/17 04:28:38 dillon Exp $
+ * $DragonFly: src/sys/dev/video/pcvt/i386/Attic/pcvt_drv.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  *
  *---------------------------------------------------------------------------*/
 
@@ -472,7 +472,7 @@ pcopen(Dev_t dev, int flag, int mode, struct proc *p)
                (*linesw[tp->t_line].l_modem)(tp, 1);   /* fake connection */
                winsz = 1;                      /* set winsize later */
        }
-       else if (tp->t_state & TS_XCLUDE && suser(p))
+       else if (tp->t_state & TS_XCLUDE && suser(td))
                return (EBUSY);
 
 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
@@ -1425,7 +1425,7 @@ pcvt_xmode_set(int on, struct proc *p)
                 * This prevents us from granting the potential security hole
                 * `IO priv' to insufficiently privileged processes.
                 */
-               error = suser(p);
+               error = suser(td);
                if (error != 0)
                        return (error);
                if (securelevel > 0)
index 0ed5d65..b64fb06 100644 (file)
@@ -45,7 +45,7 @@
  *     Last Edit-Date: [Mon Dec 27 14:05:16 1999]
  *
  * $FreeBSD: src/sys/i386/isa/pcvt/pcvt_ext.c,v 1.17 1999/12/30 16:17:09 hm Exp $
- * $DragonFly: src/sys/dev/video/pcvt/i386/Attic/pcvt_ext.c,v 1.2 2003/06/17 04:28:38 dillon Exp $
+ * $DragonFly: src/sys/dev/video/pcvt/i386/Attic/pcvt_ext.c,v 1.3 2003/06/25 03:55:54 dillon Exp $
  *
  *---------------------------------------------------------------------------*/
 
@@ -2667,7 +2667,7 @@ usl_vt_ioctl(Dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
                struct syscframe *fp = (struct syscframe *)p->p_regs;
 #endif
 
-               error = suser(p);
+               error = suser(td);
                if (error != 0)
                        return (error);
                if (securelevel > 0)
index 85fe8c1..b9403e5 100644 (file)
@@ -27,7 +27,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/ibcs2/imgact_coff.c,v 1.40 1999/12/15 23:01:47 eivind Exp $
- * $DragonFly: src/sys/emulation/ibcs2/coff/Attic/imgact_coff.c,v 1.2 2003/06/17 04:28:35 dillon Exp $
+ * $DragonFly: src/sys/emulation/ibcs2/coff/Attic/imgact_coff.c,v 1.3 2003/06/25 03:55:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -38,6 +38,7 @@
 #include <sys/fcntl.h>
 #include <sys/malloc.h>
 #include <sys/mount.h>
+#include <sys/proc.h>
 #include <sys/namei.h>
 #include <sys/vnode.h>
 
@@ -53,7 +54,7 @@
 
 extern struct sysentvec ibcs2_svr3_sysvec;
 
-static int coff_load_file __P((struct proc *p, char *name));
+static int coff_load_file __P((struct thread *td, char *name));
 static int exec_coff_imgact __P((struct image_params *imgp));
 
 static int load_coff_section __P((struct vmspace *vmspace, struct vnode *vp, vm_offset_t offset, caddr_t vmaddr, size_t memsz, size_t filsz, vm_prot_t prot));
@@ -149,9 +150,9 @@ load_coff_section(struct vmspace *vmspace, struct vnode *vp, vm_offset_t offset,
 }
 
 static int
-coff_load_file(struct proc *p, char *name)
+coff_load_file(struct thread *td, char *name)
 {
-       struct vmspace *vmspace = p->p_vmspace;
+       struct vmspace *vmspace;
        int error;
        struct nameidata nd;
        struct vnode *vp;
@@ -164,10 +165,15 @@ coff_load_file(struct proc *p, char *name)
        unsigned long text_offset = 0, text_address = 0, text_size = 0;
        unsigned long data_offset = 0, data_address = 0, data_size = 0;
        unsigned long bss_size = 0;
+       struct ucred *cred;
        int i;
 
-       /* XXX use of 'curproc' should be 'p'?*/
-       NDINIT(&nd, LOOKUP, LOCKLEAF | FOLLOW | SAVENAME, UIO_SYSSPACE, name, curproc);
+       KKASSERT(td->td_proc);
+       cred = td->td_proc->p_ucred;
+       vmspace = td->td_proc->p_vmspace;
+
+       /* XXX use of 'curthread' should be 'td'?*/
+       NDINIT(&nd, LOOKUP, LOCKLEAF | FOLLOW | SAVENAME, UIO_SYSSPACE, name, curthread);
 
        error = namei(&nd);
        if (error)
@@ -182,7 +188,7 @@ coff_load_file(struct proc *p, char *name)
                goto fail;
        }
 
-       if ((error = VOP_GETATTR(vp, &attr, p->p_ucred, p)) != 0)
+       if ((error = VOP_GETATTR(vp, &attr, cred, td)) != 0)
                goto fail;
 
        if ((vp->v_mount->mnt_flag & MNT_NOEXEC)
@@ -195,17 +201,17 @@ coff_load_file(struct proc *p, char *name)
                goto fail;
        }
 
-       if ((error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p)) != 0)
+       if ((error = VOP_ACCESS(vp, VEXEC, cred, td)) != 0)
                goto fail;
 
-       if ((error = VOP_OPEN(vp, FREAD, p->p_ucred, p)) != 0)
+       if ((error = VOP_OPEN(vp, FREAD, cred, td)) != 0)
                goto fail;
 
        /*
         * Lose the lock on the vnode. It's no longer needed, and must not
         * exist for the pagefault paging to work below.
         */
-       VOP_UNLOCK(vp, 0, p);
+       VOP_UNLOCK(vp, 0, td);
 
        if ((error = vm_mmap(kernel_map,
                            (vm_offset_t *) &ptr,
@@ -278,7 +284,7 @@ coff_load_file(struct proc *p, char *name)
                panic(__FUNCTION__ " vm_map_remove failed");
 
  fail:
-       VOP_UNLOCK(vp, 0, p);
+       VOP_UNLOCK(vp, 0, td);
  unlocked_fail:
        NDFREE(&nd, NDF_ONLY_PNBUF);
        vrele(nd.ni_vp);
@@ -393,10 +399,11 @@ exec_coff_imgact(imgp)
                                DPRINTF(("%s(%d):  shared library %s\n",
                                         __FILE__, __LINE__, libname));
                                strcpy(&libbuf[emul_path_len], libname);
-                               error = coff_load_file(imgp->proc, libbuf);
+                               error = coff_load_file(imgp->proc->p_thread, libbuf);
                                if (error)
-                                       error = coff_load_file(imgp->proc,
-                                                              libname);
+                                       error = coff_load_file(
+                                                   imgp->proc->p_thread,
+                                                   libname);
                                if (error)
                                        break;
                        }
index 688b1c3..111e0c9 100644 (file)
@@ -25,7 +25,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/ibcs2/ibcs2_fcntl.c,v 1.14 1999/09/19 17:00:14 green Exp $
- * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_fcntl.c,v 1.3 2003/06/23 17:55:38 dillon Exp $
+ * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_fcntl.c,v 1.4 2003/06/25 03:55:53 dillon Exp $
  */
 
 #include "opt_spx_hack.h"
@@ -37,6 +37,8 @@
 #include <sys/filedesc.h>
 #include <sys/ttycom.h>
 #include <sys/sysproto.h>
+#include <sys/proc.h>
+#include <sys/file2.h>
 
 #include <i386/ibcs2/ibcs2_fcntl.h>
 #include <i386/ibcs2/ibcs2_signal.h>
@@ -170,7 +172,8 @@ oflags2ioflags(flags)
 int
 ibcs2_open(struct ibcs2_open_args *uap)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;  /* XXX */
+       struct proc *p;
        int noctty = SCARG(uap, flags) & IBCS2_O_NOCTTY;
        int ret;
        caddr_t sg = stackgap_init();
@@ -188,13 +191,14 @@ ibcs2_open(struct ibcs2_open_args *uap)
                        ret = spx_open(uap);
        } else
 #endif /* SPX_HACK */
-       if (!ret && !noctty && SESS_LEADER(p) && !(p->p_flag & P_CONTROLT)) {
+       p = td->td_proc;
+       if (!ret && !noctty && p && SESS_LEADER(p) && !(p->p_flag & P_CONTROLT)) {
                struct filedesc *fdp = p->p_fd;
                struct file *fp = fdp->fd_ofiles[p->p_retval[0]];
 
                /* ignore any error, just give it a try */
                if (fp->f_type == DTYPE_VNODE)
-                       fo_ioctl(fp, TIOCSCTTY, (caddr_t) 0, p);
+                       fo_ioctl(fp, TIOCSCTTY, (caddr_t) 0, td);
        }
        return ret;
 }
index e06e8b4..bebc0dc 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/ibcs2/ibcs2_ioctl.c,v 1.13.2.1 2001/07/31 20:14:21 jon Exp $
- * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_ioctl.c,v 1.3 2003/06/23 17:55:38 dillon Exp $
+ * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_ioctl.c,v 1.4 2003/06/25 03:55:53 dillon Exp $
  */
 
 #include <sys/param.h>
 #include <sys/file.h>
 #include <sys/filedesc.h>
 #include <sys/filio.h>
+#include <sys/proc.h>
 #include <sys/ioctl_compat.h>
 #include <sys/tty.h>
 #include <machine/console.h>
+#include <sys/file2.h>
 
 #include <sys/sysproto.h>
 
@@ -337,20 +339,23 @@ stio2stios(t, ts)
 int
 ibcs2_ioctl(struct ibcs2_ioctl_args *uap)
 {
-       struct proc *p = curproc;
-       struct filedesc *fdp = p->p_fd;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
+       struct filedesc *fdp;
        struct file *fp;
        int error;
 
+       KKASSERT(p);
+       fdp = p->p_fd;
+
        if (SCARG(uap, fd) < 0 || SCARG(uap, fd) >= fdp->fd_nfiles ||
            (fp = fdp->fd_ofiles[SCARG(uap, fd)]) == NULL) {
-               DPRINTF(("ibcs2_ioctl(%d): bad fd %d ", p->p_pid,
-                        SCARG(uap, fd)));
+               DPRINTF(("ibcs2_ioctl(td=%p): bad fd %d ", td, SCARG(uap, fd)));
                return EBADF;
        }
 
        if ((fp->f_flag & (FREAD|FWRITE)) == 0) {
-               DPRINTF(("ibcs2_ioctl(%d): bad fp flag ", p->p_pid));
+               DPRINTF(("ibcs2_ioctl(td=%p): bad fp flag ", td));
                return EBADF;
        }
 
@@ -363,7 +368,7 @@ ibcs2_ioctl(struct ibcs2_ioctl_args *uap)
                struct ibcs2_termios sts;
                struct ibcs2_termio st;
        
-               if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, p)) != 0)
+               if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, td)) != 0)
                        return error;
        
                btios2stios (&bts, &sts);
@@ -399,7 +404,7 @@ ibcs2_ioctl(struct ibcs2_ioctl_args *uap)
                }
 
                /* get full BSD termios so we don't lose information */
-               if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, p)) != 0) {
+               if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, td)) != 0) {
                        DPRINTF(("ibcs2_ioctl(%d): TCSET ctl failed fd %d ",
                                 p->p_pid, SCARG(uap, fd)));
                        return error;
@@ -414,7 +419,7 @@ ibcs2_ioctl(struct ibcs2_ioctl_args *uap)
                stios2btios(&sts, &bts);
 
                return fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_TCSETA + TIOCSETA,
-                             (caddr_t)&bts, p);
+                             (caddr_t)&bts, td);
            }
 
        case IBCS2_XCSETA:
@@ -430,7 +435,7 @@ ibcs2_ioctl(struct ibcs2_ioctl_args *uap)
                }
                stios2btios (&sts, &bts);
                return fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_XCSETA + TIOCSETA,
-                             (caddr_t)&bts, p);
+                             (caddr_t)&bts, td);
            }
 
        case IBCS2_OXCSETA:
@@ -446,11 +451,11 @@ ibcs2_ioctl(struct ibcs2_ioctl_args *uap)
                }
                stios2btios (&sts, &bts);
                return fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_OXCSETA + TIOCSETA,
-                             (caddr_t)&bts, p);
+                             (caddr_t)&bts, td);
            }
 
        case IBCS2_TCSBRK:
-               DPRINTF(("ibcs2_ioctl(%d): TCSBRK ", p->p_pid));
+               DPRINTF(("ibcs2_ioctl(td=%p): TCSBRK ", td));
                return ENOSYS;
 
        case IBCS2_TCXONC:
@@ -458,12 +463,12 @@ ibcs2_ioctl(struct ibcs2_ioctl_args *uap)
                switch ((int)SCARG(uap, data)) {
                case 0:
                case 1:
-                       DPRINTF(("ibcs2_ioctl(%d): TCXONC ", p->p_pid));
+                       DPRINTF(("ibcs2_ioctl(td=%p): TCXONC ", td));
                        return ENOSYS;
                case 2:
-                       return fo_ioctl(fp, TIOCSTOP, (caddr_t)0, p);
+                       return fo_ioctl(fp, TIOCSTOP, (caddr_t)0, td);
                case 3:
-                       return fo_ioctl(fp, TIOCSTART, (caddr_t)1, p);
+                       return fo_ioctl(fp, TIOCSTART, (caddr_t)1, td);
                default:
                        return EINVAL;
                }
@@ -486,7 +491,7 @@ ibcs2_ioctl(struct ibcs2_ioctl_args *uap)
                default:
                        return EINVAL;
                }
-               return fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, p);
+               return fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, td);
            }
 
        case IBCS2_TIOCGWINSZ:
index 25f8b34..c37e4ab 100644 (file)
@@ -46,7 +46,7 @@
  *     @(#)sun_misc.c  8.1 (Berkeley) 6/18/93
  *
  * $FreeBSD: src/sys/i386/ibcs2/ibcs2_misc.c,v 1.34 1999/09/29 15:12:09 marcel Exp $
- * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_misc.c,v 1.3 2003/06/23 17:55:38 dillon Exp $
+ * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_misc.c,v 1.4 2003/06/25 03:55:53 dillon Exp $
  */
 
 /*
@@ -286,7 +286,8 @@ ibcs2_mount(struct ibcs2_mount_args *uap)
 int
 ibcs2_getdents(struct ibcs2_getdents_args *uap)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct vnode *vp;
        caddr_t inp, buf;       /* BSD-format */
        int len, reclen;        /* BSD-format */
@@ -303,6 +304,8 @@ ibcs2_getdents(struct ibcs2_getdents_args *uap)
 #define        BSD_DIRENT(cp)          ((struct dirent *)(cp))
 #define        IBCS2_RECLEN(reclen)    (reclen + sizeof(u_short))
 
+       KKASSERT(p);
+
        if ((error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) != 0)
                return (error);
        if ((fp->f_flag & FREAD) == 0)
@@ -316,7 +319,7 @@ ibcs2_getdents(struct ibcs2_getdents_args *uap)
        buflen = max(DIRBLKSIZ, SCARG(uap, nbytes));
        buflen = min(buflen, MAXBSIZE);
        buf = malloc(buflen, M_TEMP, M_WAITOK);
-       vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+       vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
 again:
        aiov.iov_base = buf;
        aiov.iov_len = buflen;
@@ -324,7 +327,7 @@ again:
        auio.uio_iovcnt = 1;
        auio.uio_rw = UIO_READ;
        auio.uio_segflg = UIO_SYSSPACE;
-       auio.uio_procp = p;
+       auio.uio_td = td;
        auio.uio_resid = buflen;
        auio.uio_offset = off;
 
@@ -418,7 +421,7 @@ eof:
 out:
        if (cookies)
                free(cookies, M_TEMP);
-       VOP_UNLOCK(vp, 0, p);
+       VOP_UNLOCK(vp, 0, td);
        free(buf, M_TEMP);
        return (error);
 }
@@ -426,7 +429,8 @@ out:
 int
 ibcs2_read(struct ibcs2_read_args *uap)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct vnode *vp;
        caddr_t inp, buf;       /* BSD-format */
        int len, reclen;        /* BSD-format */
@@ -444,6 +448,8 @@ ibcs2_read(struct ibcs2_read_args *uap)
        u_long *cookies = NULL, *cookiep;
        int ncookies;
 
+       KKASSERT(p);
+
        if ((error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) != 0) {
                if (error == EINVAL)
                        return read((struct read_args *)uap);
@@ -462,7 +468,7 @@ ibcs2_read(struct ibcs2_read_args *uap)
        buflen = max(DIRBLKSIZ, SCARG(uap, nbytes));
        buflen = min(buflen, MAXBSIZE);
        buf = malloc(buflen, M_TEMP, M_WAITOK);
-       vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+       vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
 again:
        aiov.iov_base = buf;
        aiov.iov_len = buflen;
@@ -470,7 +476,7 @@ again:
        auio.uio_iovcnt = 1;
        auio.uio_rw = UIO_READ;
        auio.uio_segflg = UIO_SYSSPACE;
-       auio.uio_procp = p;
+       auio.uio_td = td;
        auio.uio_resid = buflen;
        auio.uio_offset = off;
 
@@ -568,7 +574,7 @@ eof:
 out:
        if (cookies)
                free(cookies, M_TEMP);
-       VOP_UNLOCK(vp, 0, p);
+       VOP_UNLOCK(vp, 0, td);
        free(buf, M_TEMP);
        return (error);
 }
@@ -959,7 +965,7 @@ ibcs2_plock(struct ibcs2_plock_args *uap)
 #define IBCS2_DATALOCK 4
 
        
-        if ((error = suser()) != 0)
+        if ((error = suser(curthread)) != 0)
                 return EPERM;
        switch(SCARG(uap, cmd)) {
        case IBCS2_UNLOCK:
@@ -992,7 +998,7 @@ ibcs2_uadmin(struct ibcs2_uadmin_args *uap)
 #define SCO_AD_GETBMAJ      0
 #define SCO_AD_GETCMAJ      1
 
-        if (suser())
+        if (suser(curthread))
                 return EPERM;
 
        switch(SCARG(uap, cmd)) {
index 9048c90..2e599dc 100644 (file)
@@ -161,7 +161,7 @@ ibcs2_setipdomainname(struct setipdomainname_args *uap)
        char hname[MAXHOSTNAMELEN], *ptr;
        int error, sctl[2], hlen;
 
-       if ((error = suser()))
+       if ((error = suser(curthread)))
                return (error);
 
        /* W/out a hostname a domain-name is nonsense */
index e4596f3..e42723e 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/ibcs2/ibcs2_stat.c,v 1.10 1999/12/15 23:01:45 eivind Exp $
- * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_stat.c,v 1.3 2003/06/23 17:55:38 dillon Exp $
+ * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_stat.c,v 1.4 2003/06/25 03:55:53 dillon Exp $
  */
 
 #include <sys/param.h>
 #include <sys/systm.h>
-#include <sys/namei.h>
 #include <sys/file.h>
+#include <sys/proc.h>
+#include <sys/namei.h>
 #include <sys/stat.h>
 #include <sys/filedesc.h>
 #include <sys/kernel.h>
@@ -99,7 +100,7 @@ cvt_statfs(sp, buf, len)
 int
 ibcs2_statfs(struct ibcs2_statfs_args *uap)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;  /* XXX */
        struct mount *mp;
        struct statfs *sp;
        int error;
@@ -107,14 +108,14 @@ ibcs2_statfs(struct ibcs2_statfs_args *uap)
        caddr_t sg = stackgap_init();
 
        CHECKALTEXIST(&sg, SCARG(uap, path));
-       NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), p);
+       NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), td);
        if ((error = namei(&nd)) != 0)
                return (error);
        NDFREE(&nd, NDF_ONLY_PNBUF);
        mp = nd.ni_vp->v_mount;
        sp = &mp->mnt_stat;
        vrele(nd.ni_vp);
-       if ((error = VFS_STATFS(mp, sp, p)) != 0)
+       if ((error = VFS_STATFS(mp, sp, td)) != 0)
                return (error);
        sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
        return cvt_statfs(sp, (caddr_t)SCARG(uap, buf), SCARG(uap, len));
@@ -123,17 +124,18 @@ ibcs2_statfs(struct ibcs2_statfs_args *uap)
 int
 ibcs2_fstatfs(struct ibcs2_fstatfs_args *uap)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread; /* XXX */
        struct file *fp;
        struct mount *mp;
        register struct statfs *sp;
        int error;
 
-       if ((error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) != 0)
+       KKASSERT(td->td_proc);
+       if ((error = getvnode(td->td_proc->p_fd, SCARG(uap, fd), &fp)) != 0)
                return (error);
        mp = ((struct vnode *)fp->f_data)->v_mount;
        sp = &mp->mnt_stat;
-       if ((error = VFS_STATFS(mp, sp, p)) != 0)
+       if ((error = VFS_STATFS(mp, sp, td)) != 0)
                return (error);
        sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
        return cvt_statfs(sp, (caddr_t)SCARG(uap, buf), SCARG(uap, len));
index 198cc4d..3f2e26d 100644 (file)
@@ -53,7 +53,8 @@ extern int hw_float;
 int
 ibcs2_sysi86(struct ibcs2_sysi86_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
 
        switch (SCARG(args, cmd)) {
        case SI86_FPHW: {       /* Floating Point information */
@@ -75,7 +76,7 @@ ibcs2_sysi86(struct ibcs2_sysi86_args *args)
                int name[2];
                int error;
 
-               if ((error = suser()))
+               if ((error = suser(td)))
                  return (error);
                name[0] = CTL_KERN;
                name[1] = KERN_HOSTNAME;
index 50260a5..8a6fcbb 100644 (file)
  *
  *     from: svr4_util.c,v 1.5 1995/01/22 23:44:50 christos Exp
  * $FreeBSD: src/sys/i386/ibcs2/ibcs2_util.c,v 1.7 1999/12/15 23:01:45 eivind Exp $
- * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_util.c,v 1.3 2003/06/23 17:55:38 dillon Exp $
+ * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_util.c,v 1.4 2003/06/25 03:55:53 dillon Exp $
  */
 
 #include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/proc.h>
 #include <sys/namei.h>
 #include <sys/malloc.h>
 #include <sys/vnode.h>
@@ -59,7 +60,8 @@ ibcs2_emul_find(sgp, prefix, path, pbuf, cflag)
        char            **pbuf;
        int               cflag;
 {
-       struct proc      *p = curproc;
+       struct thread    *td = curthread;       /* XXX */
+       struct ucred    *cred;
        struct nameidata         nd;
        struct nameidata         ndroot;
        struct vattr             vat;
@@ -68,6 +70,9 @@ ibcs2_emul_find(sgp, prefix, path, pbuf, cflag)
        char                    *ptr, *buf, *cp;
        size_t                   sz, len;
 
+       KKASSERT(td->td_proc);
+       cred = td->td_proc->p_ucred;
+
        buf = (char *) malloc(MAXPATHLEN, M_TEMP, M_WAITOK);
        *pbuf = path;
 
@@ -106,7 +111,7 @@ ibcs2_emul_find(sgp, prefix, path, pbuf, cflag)
                for (cp = &ptr[len] - 1; *cp != '/'; cp--);
                *cp = '\0';
 
-               NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, p);
+               NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, td);
 
                if ((error = namei(&nd)) != 0) {
                        free(buf, M_TEMP);
@@ -116,7 +121,7 @@ ibcs2_emul_find(sgp, prefix, path, pbuf, cflag)
                *cp = '/';
        }
        else {
-               NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, p);
+               NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, td);
 
                if ((error = namei(&nd)) != 0) {
                        free(buf, M_TEMP);
@@ -131,8 +136,8 @@ ibcs2_emul_find(sgp, prefix, path, pbuf, cflag)
                 * root directory and never finding it, because "/" resolves
                 * to the emulation root directory. This is expensive :-(
                 */
-               NDINIT(&ndroot, LOOKUP, FOLLOW, UIO_SYSSPACE, ibcs2_emul_path,
-                      p);
+               NDINIT(&ndroot, LOOKUP, FOLLOW, UIO_SYSSPACE,
+                       ibcs2_emul_path, td);
 
                if ((error = namei(&ndroot)) != 0) {
                        /* Cannot happen! */
@@ -142,11 +147,11 @@ ibcs2_emul_find(sgp, prefix, path, pbuf, cflag)
                        return error;
                }
 
-               if ((error = VOP_GETATTR(nd.ni_vp, &vat, p->p_ucred, p)) != 0) {
+               if ((error = VOP_GETATTR(nd.ni_vp, &vat, cred, td)) != 0) {
                        goto done;
                }
 
-               if ((error = VOP_GETATTR(ndroot.ni_vp, &vatroot, p->p_ucred, p))
+               if ((error = VOP_GETATTR(ndroot.ni_vp, &vatroot, cred, td))
                    != 0) {
                        goto done;
                }
index 4bb8383..bf09e25 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/ibcs2/ibcs2_xenix.c,v 1.20 1999/12/15 23:01:46 eivind Exp $
- * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_xenix.c,v 1.3 2003/06/23 17:55:38 dillon Exp $
+ * $DragonFly: src/sys/emulation/ibcs2/i386/Attic/ibcs2_xenix.c,v 1.4 2003/06/25 03:55:53 dillon Exp $
  */
 
 #include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/proc.h>
 #include <sys/namei.h> 
 #include <sys/sysproto.h>
 #include <sys/kernel.h>
@@ -193,6 +194,7 @@ xenix_scoinfo(struct xenix_scoinfo_args *uap)
 int     
 xenix_eaccess(struct xenix_eaccess_args *uap)
 {
+       struct thread *td = curthread;  /* XXX */
        struct proc *p = curproc;
        struct ucred *cred = p->p_ucred;
        struct vnode *vp;
@@ -203,7 +205,7 @@ xenix_eaccess(struct xenix_eaccess_args *uap)
        CHECKALTEXIST(&sg, SCARG(uap, path));
 
         NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF, UIO_USERSPACE,
-            SCARG(uap, path), p);
+            SCARG(uap, path), td);
         if ((error = namei(&nd)) != 0)
                 return error;
         vp = nd.ni_vp;
@@ -218,7 +220,7 @@ xenix_eaccess(struct xenix_eaccess_args *uap)
                 if (SCARG(uap, flags) & IBCS2_X_OK)
                         flags |= VEXEC;
                 if ((flags & VWRITE) == 0 || (error = vn_writechk(vp)) == 0)
-                        error = VOP_ACCESS(vp, flags, cred, p);
+                        error = VOP_ACCESS(vp, flags, cred, td);
         }
        NDFREE(&nd, NDF_ONLY_PNBUF);
         vput(vp);
index 078c810..61a147a 100644 (file)
@@ -39,7 +39,7 @@
  *     @(#)procfs.h    8.9 (Berkeley) 5/14/95
  *
  * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs.h,v 1.2.2.4 2001/06/25 19:46:47 pirzyk Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs.h,v 1.2 2003/06/17 04:28:39 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs.h,v 1.3 2003/06/25 03:55:55 dillon Exp $
  */
 
 /*
@@ -72,7 +72,7 @@ struct pfsnode {
        u_short         pfs_mode;       /* mode bits for stat() */
        u_long          pfs_flags;      /* open flags */
        u_long          pfs_fileno;     /* unique file id */
-       pid_t           pfs_lockowner;  /* pfs lock owner */
+       struct thread   *pfs_lockowner; /* pfs lock owner */
 };
 
 #define PROCFS_NAMELEN         8       /* max length of a filename component */
@@ -114,7 +114,7 @@ struct dbreg;
 
 #define PFIND(pid) ((pid) ? pfind(pid) : &proc0)
 
-void linprocfs_exit __P((struct proc *));
+void linprocfs_exit __P((struct thread *));
 int linprocfs_freevp __P((struct vnode *));
 int linprocfs_allocvp __P((struct mount *, struct vnode **, long, pfstype));
 int linprocfs_sstep __P((struct proc *));
index bd4a82f..e0a2a9a 100644 (file)
@@ -39,7 +39,7 @@
  *     @(#)procfs_subr.c       8.6 (Berkeley) 5/14/95
  *
  * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_subr.c,v 1.3.2.4 2001/06/25 19:46:47 pirzyk Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c,v 1.2 2003/06/17 04:28:39 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c,v 1.3 2003/06/25 03:55:55 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -87,7 +87,7 @@ linprocfs_allocvp(mp, vpp, pid, pfs_type)
        long pid;
        pfstype pfs_type;
 {
-       struct proc *p = curproc;       /* XXX */
+       struct thread *td = curthread;  /* XXX */
        struct pfsnode *pfs;
        struct vnode *vp;
        struct pfsnode **pp;
@@ -99,7 +99,7 @@ loop:
                if (pfs->pfs_pid == pid &&
                    pfs->pfs_type == pfs_type &&
                    vp->v_mount == mp) {
-                       if (vget(vp, 0, p))
+                       if (vget(vp, 0, td))
                                goto loop;
                        *vpp = vp;
                        return (0);
@@ -137,7 +137,7 @@ loop:
        pfs->pfs_type = pfs_type;
        pfs->pfs_vnode = vp;
        pfs->pfs_flags = 0;
-       pfs->pfs_lockowner = 0;
+       pfs->pfs_lockowner = NULL;
        pfs->pfs_fileno = PROCFS_FILENO(pid, pfs_type);
 
        switch (pfs_type) {
@@ -237,11 +237,15 @@ linprocfs_rw(ap)
 {
        struct vnode *vp = ap->a_vp;
        struct uio *uio = ap->a_uio;
-       struct proc *curp = uio->uio_procp;
+       struct thread *td = uio->uio_td;
        struct pfsnode *pfs = VTOPFS(vp);
        struct proc *p;
+       struct proc *curp;
        int rtval;
 
+       curp = td->td_proc;
+       KKASSERT(curp);
+
        p = PFIND(pfs->pfs_pid);
        if (p == 0)
                return (EINVAL);
@@ -251,7 +255,7 @@ linprocfs_rw(ap)
        while (pfs->pfs_lockowner) {
                tsleep(&pfs->pfs_lockowner, PRIBIO, "pfslck", 0);
        }
-       pfs->pfs_lockowner = curproc->p_pid;
+       pfs->pfs_lockowner = curthread;
 
        switch (pfs->pfs_type) {
        case Pmem:
@@ -285,7 +289,7 @@ linprocfs_rw(ap)
                rtval = EOPNOTSUPP;
                break;
        }
-       pfs->pfs_lockowner = 0;
+       pfs->pfs_lockowner = NULL;
        wakeup(&pfs->pfs_lockowner);
        return rtval;
 }
@@ -354,10 +358,10 @@ vfs_findname(nm, buf, buflen)
 #endif
 
 void
-linprocfs_exit(struct proc *p)
+linprocfs_exit(struct thread *td)
 {
        struct pfsnode *pfs;
-       pid_t pid = p->p_pid;
+       pid_t pid = (td->td_proc) ? td->td_proc->p_pid : -1; /* YYY */
 
        /*
         * The reason for this loop is not obvious -- basicly,
index d4e126e..3edf894 100644 (file)
@@ -39,7 +39,7 @@
  *     @(#)procfs_vfsops.c     8.7 (Berkeley) 5/10/95
  *
  * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_vfsops.c,v 1.2.2.3 2001/10/15 20:42:01 des Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vfsops.c,v 1.2 2003/06/17 04:28:39 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vfsops.c,v 1.3 2003/06/25 03:55:55 dillon Exp $
  */
 
 /*
 #include <i386/linux/linprocfs/linprocfs.h>
 
 static int     linprocfs_mount __P((struct mount *mp, char *path, caddr_t data,
-                                 struct nameidata *ndp, struct proc *p));
+                                 struct nameidata *ndp, struct thread *td));
 static int     linprocfs_statfs __P((struct mount *mp, struct statfs *sbp,
-                                  struct proc *p));
+                                  struct thread *td));
 static int     linprocfs_unmount __P((struct mount *mp, int mntflags,
-                                   struct proc *p));
+                                   struct thread *td));
 
 /*
  * VFS Operations.
@@ -69,12 +69,12 @@ static int  linprocfs_unmount __P((struct mount *mp, int mntflags,
  */
 /* ARGSUSED */
 static int
-linprocfs_mount(mp, path, data, ndp, p)
+linprocfs_mount(mp, path, data, ndp, td)
        struct mount *mp;
        char *path;
        caddr_t data;
        struct nameidata *ndp;
-       struct proc *p;
+       struct thread *td;
 {
        size_t size;
        int error;
@@ -97,7 +97,7 @@ linprocfs_mount(mp, path, data, ndp, p)
        size = sizeof("linprocfs") - 1;
        bcopy("linprocfs", mp->mnt_stat.f_mntfromname, size);
        bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size);
-       (void)linprocfs_statfs(mp, &mp->mnt_stat, p);
+       (void)linprocfs_statfs(mp, &mp->mnt_stat, td);
 
        return (0);
 }
@@ -106,10 +106,10 @@ linprocfs_mount(mp, path, data, ndp, p)
  * unmount system call
  */
 static int
-linprocfs_unmount(mp, mntflags, p)
+linprocfs_unmount(mp, mntflags, td)
        struct mount *mp;
        int mntflags;
-       struct proc *p;
+       struct thread *td;
 {
        int error;
        int flags = 0;
@@ -140,10 +140,10 @@ linprocfs_root(mp, vpp)
  * Get file system statistics.
  */
 static int
-linprocfs_statfs(mp, sbp, p)
+linprocfs_statfs(mp, sbp, td)
        struct mount *mp;
        struct statfs *sbp;
-       struct proc *p;
+       struct thread *td;
 {
        sbp->f_bsize = PAGE_SIZE;
        sbp->f_iosize = PAGE_SIZE;
index 4cb9ecb..129025a 100644 (file)
@@ -39,7 +39,7 @@
  *     @(#)procfs_vnops.c      8.18 (Berkeley) 5/21/95
  *
  * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_vnops.c,v 1.3.2.5 2001/08/12 14:29:19 rwatson Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c,v 1.3 2003/06/23 17:55:40 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c,v 1.4 2003/06/25 03:55:55 dillon Exp $
  */
 
 /*
@@ -124,7 +124,7 @@ linprocfs_open(ap)
                struct vnode *a_vp;
                int  a_mode;
                struct ucred *a_cred;
-               struct proc *a_p;
+               struct thread *a_td;
        } */ *ap;
 {
        struct pfsnode *pfs = VTOPFS(ap->a_vp);
@@ -170,7 +170,7 @@ linprocfs_close(ap)
                struct vnode *a_vp;
                int  a_fflag;
                struct ucred *a_cred;
-               struct proc *a_p;
+               struct thread *a_td;
        } */ *ap;
 {
        struct pfsnode *pfs = VTOPFS(ap->a_vp);
@@ -213,13 +213,14 @@ linprocfs_ioctl(ap)
        struct vop_ioctl_args *ap;
 {
        struct pfsnode *pfs = VTOPFS(ap->a_vp);
-       struct proc *procp, *p;
+       struct proc *procp;
+       struct thread *td;
        int error;
        int signo;
        struct procfs_status *psp;
        unsigned char flags;
 
-       p = ap->a_p;
+       td = ap->a_td;
        procp = pfind(pfs->pfs_pid);
        if (procp == NULL) {
                return ENOTTY;
@@ -242,7 +243,7 @@ linprocfs_ioctl(ap)
           */
 #define NFLAGS (PF_ISUGID)
          flags = (unsigned char)*(unsigned int*)ap->a_data;
-         if (flags & NFLAGS && (error = suser_xxx(ap->a_cred, 0)))
+         if (flags & NFLAGS && (error = suser_cred(ap->a_cred, 0)))
            return error;
          procp->p_pfsflags = flags;
          break;
@@ -337,7 +338,7 @@ linprocfs_inactive(ap)
 {
        struct vnode *vp = ap->a_vp;
 
-       VOP_UNLOCK(vp, 0, ap->a_p);
+       VOP_UNLOCK(vp, 0, ap->a_td);
 
        return (0);
 }
@@ -402,7 +403,7 @@ linprocfs_getattr(ap)
                struct vnode *a_vp;
                struct vattr *a_vap;
                struct ucred *a_cred;
-               struct proc *a_p;
+               struct thread *a_td;
        } */ *ap;
 {
        struct pfsnode *pfs = VTOPFS(ap->a_vp);
@@ -548,7 +549,7 @@ linprocfs_setattr(ap)
                struct vnode *a_vp;
                struct vattr *a_vap;
                struct ucred *a_cred;
-               struct proc *a_p;
+               struct thread *a_td;
        } */ *ap;
 {
 
@@ -586,7 +587,7 @@ linprocfs_access(ap)
                struct vnode *a_vp;
                int a_mode;
                struct ucred *a_cred;
-               struct proc *a_p;
+               struct thread *a_td;
        } */ *ap;
 {
        struct vattr *vap;
@@ -601,7 +602,7 @@ linprocfs_access(ap)
                return (0);
 
        vap = &vattr;
-       error = VOP_GETATTR(ap->a_vp, vap, ap->a_cred, ap->a_p);
+       error = VOP_GETATTR(ap->a_vp, vap, ap->a_cred, ap->a_td);
        if (error)
                return (error);
 
index a96c1c3..c584c56 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/linux/linux.h,v 1.41.2.4 2003/01/06 09:19:43 fjoe Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linux.h,v 1.2 2003/06/17 04:28:38 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linux.h,v 1.3 2003/06/25 03:55:55 dillon Exp $
  */
 
 #ifndef _I386_LINUX_LINUX_H_
@@ -455,9 +455,9 @@ extern struct sysentvec elf_linux_sysvec;
  */
 struct linker_set;
 struct linux_ioctl_args;
-struct proc;
+struct thread;
 
-typedef int linux_ioctl_function_t(struct proc *, struct linux_ioctl_args *);
+typedef int linux_ioctl_function_t(struct thread *, struct linux_ioctl_args *);
 
 struct linux_ioctl_handler {
        linux_ioctl_function_t *func;
index 822cff9..e250679 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/linux/linux_machdep.c,v 1.6.2.4 2001/11/05 19:08:23 marcel Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linux_machdep.c,v 1.3 2003/06/23 17:55:39 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linux_machdep.c,v 1.4 2003/06/25 03:55:55 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -555,12 +555,15 @@ linux_ioperm(struct linux_ioperm_args *args)
 int
 linux_iopl(struct linux_iopl_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        int error;
 
+       KKASSERT(p);
+
        if (args->level < 0 || args->level > 3)
                return (EINVAL);
-       if ((error = suser()) != 0)
+       if ((error = suser(td)) != 0)
                return (error);
        if (securelevel > 0)
                return (EPERM);
index 39ce9a9..bd151f1 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/linux/linux_sysvec.c,v 1.55.2.9 2002/01/12 11:03:30 bde Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linux_sysvec.c,v 1.3 2003/06/23 17:55:39 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linux_sysvec.c,v 1.4 2003/06/25 03:55:55 dillon Exp $
  */
 
 /* XXX we use functions that might not exist. */
@@ -753,7 +753,7 @@ exec_linux_imgact_try(imgp)
            if ((error = exec_shell_imgact(imgp)) == 0) {
                    char *rpath = NULL;
 
-                   linux_emul_find(imgp->proc, NULL, linux_emul_path, 
+                   linux_emul_find(imgp->proc->p_thread, NULL, linux_emul_path, 
                        imgp->interpreter_name, &rpath, 0);
                    if (rpath != imgp->interpreter_name) {
                            int len = strlen(rpath) + 1;
index 2f29d7d..96c2135 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_file.c,v 1.41.2.6 2003/01/06 09:19:43 fjoe Exp $
- * $DragonFly: src/sys/emulation/linux/linux_file.c,v 1.3 2003/06/23 17:55:26 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_file.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 #include "opt_compat.h"
@@ -49,6 +49,8 @@
 #include <ufs/ufs/quota.h>
 #include <ufs/ufs/ufsmount.h>
 
+#include <sys/file2.h>
+
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
 #include <compat/linux/linux_util.h>
@@ -88,7 +90,10 @@ linux_open(struct linux_open_args *args)
     } */ bsd_open_args;
     int error;
     caddr_t sg;
-    struct proc *p;
+    struct thread *td = curthread;
+    struct proc *p = td->td_proc;
+
+    KKASSERT(p);
 
     sg = stackgap_init();
     
@@ -131,14 +136,13 @@ linux_open(struct linux_open_args *args)
     bsd_open_args.mode = args->mode;
 
     error = open(&bsd_open_args);
-    p = curproc;
     if (!error && !(bsd_open_args.flags & O_NOCTTY) && 
        SESS_LEADER(p) && !(p->p_flag & P_CONTROLT)) {
        struct filedesc *fdp = p->p_fd;
        struct file *fp = fdp->fd_ofiles[p->p_retval[0]];
 
        if (fp->f_type == DTYPE_VNODE)
-           fo_ioctl(fp, TIOCSCTTY, (caddr_t) 0, p);
+           fo_ioctl(fp, TIOCSCTTY, (caddr_t) 0, td);
     }
 #ifdef DEBUG
        if (ldebug(open))
@@ -247,7 +251,8 @@ struct l_dirent64 {
 static int
 getdents_common(struct linux_getdents64_args *args, int is64bit)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct dirent *bdp;
        struct vnode *vp;
        caddr_t inp, buf;               /* BSD-format */
@@ -265,6 +270,8 @@ getdents_common(struct linux_getdents64_args *args, int is64bit)
        u_long *cookies = NULL, *cookiep;
        int ncookies;
 
+       KKASSERT(p);
+
        if ((error = getvnode(p->p_fd, args->fd, &fp)) != 0)
                return (error);
 
@@ -275,7 +282,7 @@ getdents_common(struct linux_getdents64_args *args, int is64bit)
        if (vp->v_type != VDIR)
                return (EINVAL);
 
-       if ((error = VOP_GETATTR(vp, &va, p->p_ucred, p)))
+       if ((error = VOP_GETATTR(vp, &va, p->p_ucred, td)))
                return (error);
 
        nbytes = args->count;
@@ -293,7 +300,7 @@ getdents_common(struct linux_getdents64_args *args, int is64bit)
        buflen = max(LINUX_DIRBLKSIZ, nbytes);
        buflen = min(buflen, MAXBSIZE);
        buf = malloc(buflen, M_TEMP, M_WAITOK);
-       vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+       vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
 
 again:
        aiov.iov_base = buf;
@@ -302,7 +309,7 @@ again:
        auio.uio_iovcnt = 1;
        auio.uio_rw = UIO_READ;
        auio.uio_segflg = UIO_SYSSPACE;
-       auio.uio_procp = p;
+       auio.uio_td = td;
        auio.uio_resid = buflen;
        auio.uio_offset = off;
 
@@ -432,7 +439,7 @@ out:
        if (cookies)
                free(cookies, M_TEMP);
 
-       VOP_UNLOCK(vp, 0, p);
+       VOP_UNLOCK(vp, 0, td);
        free(buf, M_TEMP);
        return (error);
 }
index eb96346..9e5da04 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/compat/linux/linux_getcwd.c,v 1.2.2.3 2001/11/05 19:08:22 marcel Exp $ */
-/* $DragonFly: src/sys/emulation/linux/linux_getcwd.c,v 1.3 2003/06/23 17:55:26 dillon Exp $ */
+/* $DragonFly: src/sys/emulation/linux/linux_getcwd.c,v 1.4 2003/06/25 03:55:44 dillon Exp $ */
 /* $OpenBSD: linux_getcwd.c,v 1.2 2001/05/16 12:50:21 ho Exp $ */
 /* $NetBSD: vfs_getcwd.c,v 1.3.2.3 1999/07/11 10:24:09 sommerfeld Exp $ */
 
@@ -43,7 +43,6 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/sysproto.h>
-#include <sys/namei.h>
 #include <sys/filedesc.h>
 #include <sys/kernel.h>
 #include <sys/file.h>
@@ -51,6 +50,7 @@
 #include <sys/vnode.h>
 #include <sys/mount.h>
 #include <sys/proc.h>
+#include <sys/namei.h>
 #include <sys/uio.h>
 #include <sys/malloc.h>
 #include <sys/dirent.h>
 
 static int
 linux_getcwd_scandir __P((struct vnode **, struct vnode **,
-    char **, char *, struct proc *));
+    char **, char *, struct thread *));
 static int
 linux_getcwd_common __P((struct vnode *, struct vnode *,
-                  char **, char *, int, int, struct proc *));
+                  char **, char *, int, int, struct thread *));
 
 #define DIRENT_MINSIZE (sizeof(struct dirent) - (MAXNAMLEN+1) + 4)
 
@@ -105,13 +105,14 @@ linux_getcwd_common __P((struct vnode *, struct vnode *,
  * On exit, *uvpp is either NULL or is a locked vnode reference.
  */
 static int
-linux_getcwd_scandir(lvpp, uvpp, bpp, bufp, p)
+linux_getcwd_scandir(lvpp, uvpp, bpp, bufp, td)
        struct vnode **lvpp;
        struct vnode **uvpp;
        char **bpp;
        char *bufp;
-       struct proc *p;
+       struct thread *td;
 {
+       struct proc *p = td->td_proc;
        int     error = 0;
        int     eofflag;
        off_t   off;
@@ -128,12 +129,14 @@ linux_getcwd_scandir(lvpp, uvpp, bpp, bufp, p)
        int len, reclen;
        tries = 0;
 
+       KKASSERT(p);
+
        /*
         * If we want the filename, get some info we need while the
         * current directory is still locked.
         */
        if (bufp != NULL) {
-               error = VOP_GETATTR(lvp, &va, p->p_ucred, p);
+               error = VOP_GETATTR(lvp, &va, p->p_ucred, td);
                if (error) {
                        vput(lvp);
                        *lvpp = NULL;
@@ -148,7 +151,7 @@ linux_getcwd_scandir(lvpp, uvpp, bpp, bufp, p)
         */
        cn.cn_nameiop = LOOKUP;
        cn.cn_flags = ISLASTCN | ISDOTDOT | RDONLY;
-       cn.cn_proc = p;
+       cn.cn_td = td;
        cn.cn_cred = p->p_ucred;
        cn.cn_pnbuf = NULL;
        cn.cn_nameptr = "..";
@@ -197,7 +200,7 @@ unionread:
                uio.uio_resid = dirbuflen;
                uio.uio_segflg = UIO_SYSSPACE;
                uio.uio_rw = UIO_READ;
-               uio.uio_procp = p;
+               uio.uio_td = td;
 
                eofflag = 0;
 
@@ -275,21 +278,25 @@ out:
 #define GETCWD_CHECK_ACCESS 0x0001
 
 static int
-linux_getcwd_common (lvp, rvp, bpp, bufp, limit, flags, p)
+linux_getcwd_common (lvp, rvp, bpp, bufp, limit, flags, td)
        struct vnode *lvp;
        struct vnode *rvp;
        char **bpp;
        char *bufp;
        int limit;
        int flags;
-       struct proc *p;
+       struct thread *td;
 {
-       struct filedesc *fdp = p->p_fd;
+       struct proc *p = td->td_proc;
+       struct filedesc *fdp;
        struct vnode *uvp = NULL;
        char *bp = NULL;
        int error;
        int perms = VEXEC;
 
+       KKASSERT(p);
+       fdp = p->p_fd;
+
        if (rvp == NULL) {
                rvp = fdp->fd_rdir;
                if (rvp == NULL)
@@ -306,7 +313,7 @@ linux_getcwd_common (lvp, rvp, bpp, bufp, limit, flags, p)
         *      uvp is either NULL, or locked and held.
         */
 
-       error = vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY, p);
+       error = vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY, td);
        if (error) {
                vrele(lvp);
                lvp = NULL;
@@ -336,7 +343,7 @@ linux_getcwd_common (lvp, rvp, bpp, bufp, limit, flags, p)
                 * whether or not caller cares.
                 */
                if (flags & GETCWD_CHECK_ACCESS) {
-                       error = VOP_ACCESS(lvp, perms, p->p_ucred, p);
+                       error = VOP_ACCESS(lvp, perms, p->p_ucred, td);
                        if (error)
                                goto out;
                        perms = VEXEC|VREAD;
@@ -362,14 +369,14 @@ linux_getcwd_common (lvp, rvp, bpp, bufp, limit, flags, p)
                                goto out;
                        }
                        VREF(lvp);
-                       error = vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY, p);
+                       error = vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY, td);
                        if (error != 0) {
                                vrele(lvp);
                                lvp = NULL;
                                goto out;
                        }
                }
-               error = linux_getcwd_scandir(&lvp, &uvp, &bp, bufp, p);
+               error = linux_getcwd_scandir(&lvp, &uvp, &bp, bufp, td);
                if (error)
                        goto out;
 #if DIAGNOSTIC         
@@ -408,11 +415,14 @@ out:
 int
 linux_getcwd(struct linux_getcwd_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct __getcwd_args bsd;
        caddr_t sg, bp, bend, path;
        int error, len, lenused;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        printf("Linux-emul(%ld): getcwd(%p, %ld)\n", (long)p->p_pid,
               args->buf, args->bufsize);
@@ -451,7 +461,7 @@ linux_getcwd(struct linux_getcwd_args *args)
                 */
 
                error = linux_getcwd_common (p->p_fd->fd_cdir, NULL,
-                   &bp, path, len/2, GETCWD_CHECK_ACCESS, p);
+                   &bp, path, len/2, GETCWD_CHECK_ACCESS, td);
 
                if (error)
                        goto out;
index 82e6b41..3daea27 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.55.2.11 2003/05/01 20:16:09 anholt Exp $
- * $DragonFly: src/sys/emulation/linux/linux_ioctl.c,v 1.3 2003/06/23 17:55:26 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_ioctl.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -52,6 +52,7 @@
 #include <net/if.h>
 #include <net/if_dl.h>
 #include <net/if_types.h>
+#include <sys/file2.h>
 
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
@@ -99,7 +100,7 @@ DATA_SET(linux_ioctl_handler_set, drm_handler);
 struct handler_element 
 {
        TAILQ_ENTRY(handler_element) list;
-       int     (*func)(struct proc *, struct linux_ioctl_args *);
+       int     (*func)(struct thread *, struct linux_ioctl_args *);
        int     low, high, span;
 };
 
@@ -107,15 +108,19 @@ static TAILQ_HEAD(, handler_element) handlers =
        TAILQ_HEAD_INITIALIZER(handlers);
 
 static int
-linux_ioctl_disk(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_disk(struct thread *td, struct linux_ioctl_args *args)
 {
-       struct file *fp = p->p_fd->fd_ofiles[args->fd];
+       struct proc *p = td->td_proc;
+       struct file *fp;
        int error;
        struct disklabel dl;
 
+       KKASSERT(p);
+       fp = p->p_fd->fd_ofiles[args->fd];
+
        switch (args->cmd & 0xffff) {
        case LINUX_BLKGETSIZE:
-               error = fo_ioctl(fp, DIOCGDINFO, (caddr_t)&dl, p);
+               error = fo_ioctl(fp, DIOCGDINFO, (caddr_t)&dl, p->p_thread);
                if (error)
                        return (error);
                return (copyout(&(dl.d_secperunit), (caddr_t)args->arg,
@@ -547,18 +552,20 @@ linux_to_bsd_termio(struct linux_termio *lio, struct termios *bios)
 }
 
 static int
-linux_ioctl_termio(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_termio(struct thread *td, struct linux_ioctl_args *args)
 {
        struct termios bios;
        struct linux_termios lios;
        struct linux_termio lio;
-       struct file *fp = p->p_fd->fd_ofiles[args->fd];
+       struct file *fp;
        int error;
 
-       switch (args->cmd & 0xffff) {
+       KKASSERT(td->td_proc);
+       fp = td->td_proc->p_fd->fd_ofiles[args->fd];
 
+       switch (args->cmd & 0xffff) {
        case LINUX_TCGETS:
-               error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bios, p);
+               error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bios, td);
                if (error)
                        return (error);
                bsd_to_linux_termios(&bios, &lios);
@@ -569,24 +576,24 @@ linux_ioctl_termio(struct proc *p, struct linux_ioctl_args *args)
                if (error)
                        return (error);
                linux_to_bsd_termios(&lios, &bios);
-               return (fo_ioctl(fp, TIOCSETA, (caddr_t)&bios, p));
+               return (fo_ioctl(fp, TIOCSETA, (caddr_t)&bios, td));
 
        case LINUX_TCSETSW:
                error = copyin((caddr_t)args->arg, &lios, sizeof(lios));
                if (error)
                        return (error);
                linux_to_bsd_termios(&lios, &bios);
-               return (fo_ioctl(fp, TIOCSETAW, (caddr_t)&bios, p));
+               return (fo_ioctl(fp, TIOCSETAW, (caddr_t)&bios, td));
 
        case LINUX_TCSETSF:
                error = copyin((caddr_t)args->arg, &lios, sizeof(lios));
                if (error)
                        return (error);
                linux_to_bsd_termios(&lios, &bios);
-               return (fo_ioctl(fp, TIOCSETAF, (caddr_t)&bios, p));
+               return (fo_ioctl(fp, TIOCSETAF, (caddr_t)&bios, td));
 
        case LINUX_TCGETA:
-               error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bios, p);
+               error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bios, td);
                if (error)
                        return (error);
                bsd_to_linux_termio(&bios, &lio);
@@ -597,21 +604,21 @@ linux_ioctl_termio(struct proc *p, struct linux_ioctl_args *args)
                if (error)
                        return (error);
                linux_to_bsd_termio(&lio, &bios);
-               return (fo_ioctl(fp, TIOCSETA, (caddr_t)&bios, p));
+               return (fo_ioctl(fp, TIOCSETA, (caddr_t)&bios, td));
 
        case LINUX_TCSETAW:
                error = copyin((caddr_t)args->arg, &lio, sizeof(lio));
                if (error)
                        return (error);
                linux_to_bsd_termio(&lio, &bios);
-               return (fo_ioctl(fp, TIOCSETAW, (caddr_t)&bios, p));
+               return (fo_ioctl(fp, TIOCSETAW, (caddr_t)&bios, td));
 
        case LINUX_TCSETAF:
                error = copyin((caddr_t)args->arg, &lio, sizeof(lio));
                if (error)
                        return (error);
                linux_to_bsd_termio(&lio, &bios);
-               return (fo_ioctl(fp, TIOCSETAF, (caddr_t)&bios, p));
+               return (fo_ioctl(fp, TIOCSETAF, (caddr_t)&bios, td));
 
        /* LINUX_TCSBRK */
 
@@ -627,7 +634,7 @@ linux_ioctl_termio(struct proc *p, struct linux_ioctl_args *args)
                case LINUX_TCION: {
                        int c;
                        struct write_args wr;
-                       error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bios, p);
+                       error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bios, td);
                        if (error)
                                return (error);
                        c = (args->arg == LINUX_TCIOFF) ? VSTOP : VSTART;
@@ -767,13 +774,13 @@ linux_ioctl_termio(struct proc *p, struct linux_ioctl_args *args)
                default:
                        return (EINVAL);
                }
-               return (fo_ioctl(fp, TIOCSETD, (caddr_t)&line, p));
+               return (fo_ioctl(fp, TIOCSETD, (caddr_t)&line, td));
        }
 
        case LINUX_TIOCGETD: {
                int linux_line;
                int bsd_line = TTYDISC;
-               error = fo_ioctl(fp, TIOCGETD, (caddr_t)&bsd_line, p);
+               error = fo_ioctl(fp, TIOCGETD, (caddr_t)&bsd_line, td);
                if (error)
                        return (error);
                switch (bsd_line) {
@@ -896,13 +903,15 @@ set_linux_cdrom_addr(union linux_cdrom_addr *addr, int format, int lba)
 }
 
 static int
-linux_ioctl_cdrom(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_cdrom(struct thread *td, struct linux_ioctl_args *args)
 {
-       struct file *fp = p->p_fd->fd_ofiles[args->fd];
+       struct file *fp;
        int error;
 
-       switch (args->cmd & 0xffff) {
+       KKASSERT(td->td_proc);
+       fp = td->td_proc->p_fd->fd_ofiles[args->fd];
 
+       switch (args->cmd & 0xffff) {
        case LINUX_CDROMPAUSE:
                args->cmd = CDIOCPAUSE;
                return (ioctl((struct ioctl_args *)args));
@@ -922,7 +931,7 @@ linux_ioctl_cdrom(struct proc *p, struct linux_ioctl_args *args)
        case LINUX_CDROMREADTOCHDR: {
                struct ioc_toc_header th;
                struct linux_cdrom_tochdr lth;
-               error = fo_ioctl(fp, CDIOREADTOCHEADER, (caddr_t)&th, p);
+               error = fo_ioctl(fp, CDIOREADTOCHEADER, (caddr_t)&th, td);
                if (!error) {
                        lth.cdth_trk0 = th.starting_track;
                        lth.cdth_trk1 = th.ending_track;
@@ -937,7 +946,7 @@ linux_ioctl_cdrom(struct proc *p, struct linux_ioctl_args *args)
                struct ioc_read_toc_single_entry irtse;
                irtse.address_format = ltep->cdte_format;
                irtse.track = ltep->cdte_track;
-               error = fo_ioctl(fp, CDIOREADTOCENTRY, (caddr_t)&irtse, p);
+               error = fo_ioctl(fp, CDIOREADTOCENTRY, (caddr_t)&irtse, td);
                if (!error) {
                        lte = *ltep;
                        lte.cdte_ctrl = irtse.entry.control;
@@ -975,7 +984,7 @@ linux_ioctl_cdrom(struct proc *p, struct linux_ioctl_args *args)
                bsdsc.track = 0;
                bsdsc.data_len = sizeof(struct cd_sub_channel_info);
                bsdsc.data = bsdinfo;
-               error = fo_ioctl(fp, CDIOCREADSUBCHANNEL, (caddr_t)&bsdsc, p);
+               error = fo_ioctl(fp, CDIOCREADSUBCHANNEL, (caddr_t)&bsdsc, td);
                if (error)
                        return (error);
                error = copyin((caddr_t)args->arg, &sc,
@@ -1030,7 +1039,7 @@ static u_int32_t dirbits[4] = { IOC_VOID, IOC_IN, IOC_OUT, IOC_INOUT };
 #define        SETDIR(c)       (((c) & ~IOC_DIRMASK) | dirbits[args->cmd >> 30])
 
 static int
-linux_ioctl_sound(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_sound(struct thread *td, struct linux_ioctl_args *args)
 {
 
        switch (args->cmd & 0xffff) {
@@ -1104,7 +1113,7 @@ linux_ioctl_sound(struct proc *p, struct linux_ioctl_args *args)
                return (ioctl((struct ioctl_args *)args));
 
        case LINUX_OSS_GETVERSION: {
-               int version = linux_get_oss_version(p);
+               int version = linux_get_oss_version(td);
                return (copyout(&version, (caddr_t)args->arg, sizeof(int)));
        }
 
@@ -1264,9 +1273,12 @@ linux_ioctl_sound(struct proc *p, struct linux_ioctl_args *args)
 #define ISSIGVALID(sig)                ((sig) > 0 && (sig) < NSIG)
 
 static int
-linux_ioctl_console(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_console(struct thread *td, struct linux_ioctl_args *args)
 {
-       struct file *fp = p->p_fd->fd_ofiles[args->fd];
+       struct file *fp;
+
+       KKASSERT(td->td_proc);
+       fp = td->td_proc->p_fd->fd_ofiles[args->fd];
 
        switch (args->cmd & 0xffff) {
 
@@ -1313,7 +1325,7 @@ linux_ioctl_console(struct proc *p, struct linux_ioctl_args *args)
                default:
                        return (EINVAL);
                }
-               return (fo_ioctl(fp, KDSKBMODE, (caddr_t)&kbdmode, p));
+               return (fo_ioctl(fp, KDSKBMODE, (caddr_t)&kbdmode, td));
        }
 
        case LINUX_VT_OPENQRY:
@@ -1442,6 +1454,7 @@ linux_ifconf(struct proc *p, struct ifconf *uifc)
        struct iovec iov;
        struct uio uio;
        int error, ethno;
+       struct thread *td = p->p_thread;
 
        error = copyin(uifc, &ifc, sizeof ifc);
        if (error != 0)
@@ -1456,7 +1469,7 @@ linux_ifconf(struct proc *p, struct ifconf *uifc)
        uio.uio_resid = ifc.ifc_len;
        uio.uio_segflg = UIO_USERSPACE;
        uio.uio_rw = UIO_READ;
-       uio.uio_procp = p;
+       uio.uio_td = td;
 
        /* Keep track of eth interfaces */
        ethno = 0;
@@ -1556,13 +1569,15 @@ linux_gifhwaddr(struct ifnet *ifp, struct l_ifreq *ifr)
  */
 
 static int
-linux_ioctl_socket(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_socket(struct thread *td, struct linux_ioctl_args *args)
 {
+       struct proc *p = td->td_proc;
        char lifname[LINUX_IFNAMSIZ], ifname[IFNAMSIZ];
        struct ifnet *ifp;
        struct file *fp;
        int error, type;
 
+       KKASSERT(p);
        KASSERT(LINUX_IFNAMSIZ == IFNAMSIZ,
            (__FUNCTION__ "(): LINUX_IFNAMSIZ != IFNAMSIZ"));
        
@@ -1580,7 +1595,7 @@ linux_ioctl_socket(struct proc *p, struct linux_ioctl_args *args)
                case LINUX_SIOCGIFADDR:
                case LINUX_SIOCSIFADDR:
                case LINUX_SIOCGIFFLAGS:
-                       return (linux_ioctl_special(p, args));
+                       return (linux_ioctl_special(td, args));
                default:
                        return (ENOIOCTL);
                }
@@ -1776,13 +1791,14 @@ linux_ioctl_socket(struct proc *p, struct linux_ioctl_args *args)
  * Device private ioctl handler
  */
 static int
-linux_ioctl_private(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_private(struct thread *td, struct linux_ioctl_args *args)
 {
        struct filedesc *fdp;
        struct file *fp;
        int type;
 
-       fdp = p->p_fd;
+       KKASSERT(td->td_proc);
+       fdp = td->td_proc->p_fd;
        if (args->fd >= fdp->fd_nfiles ||
            (fp = fdp->fd_ofiles[args->fd]) == NULL) {
                return (EBADF);
@@ -1790,7 +1806,7 @@ linux_ioctl_private(struct proc *p, struct linux_ioctl_args *args)
                type = fp->f_type;
        }
        if (type == DTYPE_SOCKET)
-               return (linux_ioctl_socket(p, args));
+               return (linux_ioctl_socket(td, args));
        return (ENOIOCTL);
 }
 
@@ -1798,7 +1814,7 @@ linux_ioctl_private(struct proc *p, struct linux_ioctl_args *args)
  * DRM ioctl handler (sys/dev/drm)
  */
 static int
-linux_ioctl_drm(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_drm(struct thread *td, struct linux_ioctl_args *args)
 {
        args->cmd = SETDIR(args->cmd);
        return ioctl((struct ioctl_args *)args);
@@ -1808,7 +1824,7 @@ linux_ioctl_drm(struct proc *p, struct linux_ioctl_args *args)
  * Special ioctl handler
  */
 static int
-linux_ioctl_special(struct proc *p, struct linux_ioctl_args *args)
+linux_ioctl_special(struct thread *td, struct linux_ioctl_args *args)
 {
        int error;
 
@@ -1839,12 +1855,15 @@ linux_ioctl_special(struct proc *p, struct linux_ioctl_args *args)
 int
 linux_ioctl(struct linux_ioctl_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct filedesc *fdp;
        struct file *fp;
        struct handler_element *he;
        int error, cmd;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(ioctl))
                printf(ARGS(ioctl, "%d, %04lx, *"), args->fd, args->cmd);
@@ -1861,7 +1880,7 @@ linux_ioctl(struct linux_ioctl_args *args)
        cmd = args->cmd & 0xffff;
        TAILQ_FOREACH(he, &handlers, list) {
                if (cmd >= he->low && cmd <= he->high) {
-                       error = (*he->func)(p, args);
+                       error = (*he->func)(td, args);
                        if (error != ENOIOCTL)
                                return (error);
                }
index 5d41692..fabeae4 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_ioctl.h,v 1.4.2.4 2003/05/01 20:16:09 anholt Exp $
- * $DragonFly: src/sys/emulation/linux/linux_ioctl.h,v 1.2 2003/06/17 04:28:19 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_ioctl.h,v 1.3 2003/06/25 03:55:44 dillon Exp $
  */
 
 #ifndef _LINUX_IOCTL_H_
  * This doesn't really belong here, but I can't think of a better
  * place to put it.
  */
+struct ifnet;
 int             linux_ifname(struct ifnet *, char *, size_t);
 
 #endif /* !_LINUX_IOCTL_H_ */
index 95c80ea..8aab7bc 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.7.2.2 2001/11/05 19:08:22 marcel Exp $
- * $DragonFly: src/sys/emulation/linux/linux_mib.c,v 1.3 2003/06/23 17:55:26 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_mib.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -57,11 +57,11 @@ linux_sysctl_osname(SYSCTL_HANDLER_ARGS)
        char osname[LINUX_MAX_UTSNAME];
        int error;
 
-       strcpy(osname, linux_get_osname(req->p));
+       strcpy(osname, linux_get_osname(req->td));
        error = sysctl_handle_string(oidp, osname, LINUX_MAX_UTSNAME, req);
        if (error || req->newptr == NULL)
                return (error);
-       error = linux_set_osname(req->p, osname);
+       error = linux_set_osname(req->td, osname);
        return (error);
 }
 
@@ -78,11 +78,11 @@ linux_sysctl_osrelease(SYSCTL_HANDLER_ARGS)
        char osrelease[LINUX_MAX_UTSNAME];
        int error;
 
-       strcpy(osrelease, linux_get_osrelease(req->p));
+       strcpy(osrelease, linux_get_osrelease(req->td));
        error = sysctl_handle_string(oidp, osrelease, LINUX_MAX_UTSNAME, req);
        if (error || req->newptr == NULL)
                return (error);
-       error = linux_set_osrelease(req->p, osrelease);
+       error = linux_set_osrelease(req->td, osrelease);
        return (error);
 }
 
@@ -99,11 +99,11 @@ linux_sysctl_oss_version(SYSCTL_HANDLER_ARGS)
        int oss_version;
        int error;
 
-       oss_version = linux_get_oss_version(req->p);
+       oss_version = linux_get_oss_version(req->td);
        error = sysctl_handle_int(oidp, &oss_version, 0, req);
        if (error || req->newptr == NULL)
                return (error);
-       error = linux_set_oss_version(req->p, oss_version);
+       error = linux_set_oss_version(req->td, oss_version);
        return (error);
 }
 
@@ -113,12 +113,13 @@ SYSCTL_PROC(_compat_linux, OID_AUTO, oss_version,
            "Linux OSS version");
 
 static struct linux_prison *
-get_prison(struct proc *p)
+get_prison(struct thread *td)
 {
        struct prison *pr;
        struct linux_prison *lpr;
 
-       pr = p->p_ucred->cr_prison;
+       KKASSERT(td->td_proc);
+       pr = td->td_proc->p_ucred->cr_prison;
        if (pr == NULL)
                return (NULL);
 
@@ -132,13 +133,13 @@ get_prison(struct proc *p)
 }
 
 char *
-linux_get_osname(p)
-       struct proc *p;
+linux_get_osname(struct thread *td)
 {
        register struct prison *pr;
        register struct linux_prison *lpr;
 
-       pr = p->p_ucred->cr_prison;
+       KKASSERT(td->td_proc);
+       pr = td->td_proc->p_ucred->cr_prison;
        if (pr != NULL && pr->pr_linux != NULL) {
                lpr = pr->pr_linux;
                if (lpr->pr_osname[0])
@@ -149,13 +150,12 @@ linux_get_osname(p)
 }
 
 int
-linux_set_osname(p, osname)
-       struct proc *p;
-       char *osname;
+linux_set_osname(struct thread *td, char *osname)
 {
        register struct linux_prison *lpr;
 
-       lpr = get_prison(p);
+       KKASSERT(td->td_proc);
+       lpr = get_prison(td);
        if (lpr != NULL)
                strcpy(lpr->pr_osname, osname);
        else
@@ -165,13 +165,13 @@ linux_set_osname(p, osname)
 }
 
 char *
-linux_get_osrelease(p)
-       struct proc *p;
+linux_get_osrelease(struct thread *td)
 {
        register struct prison *pr;
        register struct linux_prison *lpr;
 
-       pr = p->p_ucred->cr_prison;
+       KKASSERT(td->td_proc);
+       pr = td->td_proc->p_ucred->cr_prison;
        if (pr != NULL && pr->pr_linux != NULL) {
                lpr = pr->pr_linux;
                if (lpr->pr_osrelease[0])
@@ -182,13 +182,11 @@ linux_get_osrelease(p)
 }
 
 int
-linux_set_osrelease(p, osrelease)
-       struct proc *p;
-       char *osrelease;
+linux_set_osrelease(struct thread *td, char *osrelease)
 {
        register struct linux_prison *lpr;
 
-       lpr = get_prison(p);
+       lpr = get_prison(td);
        if (lpr != NULL)
                strcpy(lpr->pr_osrelease, osrelease);
        else
@@ -198,13 +196,13 @@ linux_set_osrelease(p, osrelease)
 }
 
 int
-linux_get_oss_version(p)
-       struct proc *p;
+linux_get_oss_version(struct thread *td)
 {
        register struct prison *pr;
        register struct linux_prison *lpr;
 
-       pr = p->p_ucred->cr_prison;
+       KKASSERT(td->td_proc);
+       pr = td->td_proc->p_ucred->cr_prison;
        if (pr != NULL && pr->pr_linux != NULL) {
                lpr = pr->pr_linux;
                if (lpr->pr_oss_version)
@@ -215,13 +213,11 @@ linux_get_oss_version(p)
 }
 
 int
-linux_set_oss_version(p, oss_version)
-       struct proc *p;
-       int oss_version;
+linux_set_oss_version(struct thread *td, int oss_version)
 {
        register struct linux_prison *lpr;
 
-       lpr = get_prison(p);
+       lpr = get_prison(td);
        if (lpr != NULL)
                lpr->pr_oss_version = oss_version;
        else
index 54be021..94d4ca2 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_mib.h,v 1.3.2.1 2000/10/30 10:51:37 obrien Exp $
- * $DragonFly: src/sys/emulation/linux/linux_mib.h,v 1.2 2003/06/17 04:28:19 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_mib.h,v 1.3 2003/06/25 03:55:44 dillon Exp $
  */
 
 #ifndef _LINUX_MIB_H_
 #define _LINUX_MIB_H_
 
-char*  linux_get_osname        __P((struct proc *p));
-int    linux_set_osname        __P((struct proc *p, char *osname));
+char*  linux_get_osname        __P((struct thread *td));
+int    linux_set_osname        __P((struct thread *td, char *osname));
 
-char*  linux_get_osrelease     __P((struct proc *p));
-int    linux_set_osrelease     __P((struct proc *p, char *osrelease));
+char*  linux_get_osrelease     __P((struct thread *td));
+int    linux_set_osrelease     __P((struct thread *td, char *osrelease));
 
-int    linux_get_oss_version   __P((struct proc *p));
-int    linux_set_oss_version   __P((struct proc *p, int oss_version));
+int    linux_get_oss_version   __P((struct thread *td));
+int    linux_set_oss_version   __P((struct thread *td, int oss_version));
 
 #endif /* _LINUX_MIB_H_ */
index 06ba007..7ff1f54 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.85.2.9 2002/09/24 08:11:41 mdodd Exp $
- * $DragonFly: src/sys/emulation/linux/linux_misc.c,v 1.3 2003/06/23 17:55:26 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_misc.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 #include "opt_compat.h"
@@ -39,9 +39,9 @@
 #include <sys/lock.h>
 #include <sys/mman.h>
 #include <sys/mount.h>
-#include <sys/namei.h>
 #include <sys/poll.h>
 #include <sys/proc.h>
+#include <sys/namei.h>
 #include <sys/blist.h>
 #include <sys/reboot.h>
 #include <sys/resourcevar.h>
@@ -166,11 +166,14 @@ linux_sysinfo(struct linux_sysinfo_args *args)
 int
 linux_alarm(struct linux_alarm_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct itimerval it, old_it;
        struct timeval tv;
        int s;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(alarm))
                printf(ARGS(alarm, "%u"), args->secs);
@@ -208,13 +211,16 @@ linux_alarm(struct linux_alarm_args *args)
 int
 linux_brk(struct linux_brk_args *args)
 {
-       struct proc *p = curproc;
-       struct vmspace *vm = p->p_vmspace;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
+       struct vmspace *vm;
        vm_offset_t new, old;
        struct obreak_args /* {
                char * nsize;
        } */ tmp;
 
+       KKASSERT(p);
+       vm = p->p_vmspace;
 #ifdef DEBUG
        if (ldebug(brk))
                printf(ARGS(brk, "%p"), (void *)args->dsend);
@@ -233,7 +239,8 @@ linux_brk(struct linux_brk_args *args)
 int
 linux_uselib(struct linux_uselib_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p;
        struct nameidata ni;
        struct vnode *vp;
        struct exec *a_out;
@@ -246,6 +253,9 @@ linux_uselib(struct linux_uselib_args *args)
        caddr_t sg;
        int locked;
 
+       KKASSERT(td->td_proc);
+       p = td->td_proc;
+
        sg = stackgap_init();
        CHECKALTEXIST(&sg, args->library);
 
@@ -258,7 +268,7 @@ linux_uselib(struct linux_uselib_args *args)
        locked = 0;
        vp = NULL;
 
-       NDINIT(&ni, LOOKUP, FOLLOW|LOCKLEAF, UIO_USERSPACE, args->library, p);
+       NDINIT(&ni, LOOKUP, FOLLOW|LOCKLEAF, UIO_USERSPACE, args->library, td);
        error = namei(&ni);
        if (error)
                goto cleanup;
@@ -286,7 +296,7 @@ linux_uselib(struct linux_uselib_args *args)
        }
 
        /* Executable? */
-       error = VOP_GETATTR(vp, &attr, p->p_ucred, p);
+       error = VOP_GETATTR(vp, &attr, p->p_ucred, td);
        if (error)
                goto cleanup;
 
@@ -303,18 +313,18 @@ linux_uselib(struct linux_uselib_args *args)
        }
 
        /* Can we access it? */
-       error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p);
+       error = VOP_ACCESS(vp, VEXEC, p->p_ucred, td);
        if (error)
                goto cleanup;
 
-       error = VOP_OPEN(vp, FREAD, p->p_ucred, p);
+       error = VOP_OPEN(vp, FREAD, p->p_ucred, td);
        if (error)
                goto cleanup;
 
        /*
         * Lock no longer needed
         */
-       VOP_UNLOCK(vp, 0, p);
+       VOP_UNLOCK(vp, 0, td);
        locked = 0;
 
        /* Pull in executable header into kernel_map */
@@ -452,7 +462,7 @@ linux_uselib(struct linux_uselib_args *args)
 cleanup:
        /* Unlock vnode if needed */
        if (locked)
-               VOP_UNLOCK(vp, 0, p);
+               VOP_UNLOCK(vp, 0, td);
 
        /* Release the kernel mapping. */
        if (a_out)
@@ -465,12 +475,15 @@ cleanup:
 int
 linux_select(struct linux_select_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct select_args bsa;
        struct timeval tv0, tv1, utv, *tvp;
        caddr_t sg;
        int error;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(select))
                printf(ARGS(select, "%d, %p, %p, %p, %p"), args->nfds,
@@ -572,12 +585,15 @@ select_out:
 int     
 linux_mremap(struct linux_mremap_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
        struct munmap_args /* {
                void *addr;
                size_t len;
        } */ bsd_args; 
        int error = 0;
+       struct proc *p = td->td_proc;
+
+       KKASSERT(p);
  
 #ifdef DEBUG
        if (ldebug(mremap))
@@ -625,11 +641,14 @@ linux_msync(struct linux_msync_args *args)
 int
 linux_time(struct linux_time_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct timeval tv;
        l_time_t tm;
        int error;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(time))
                printf(ARGS(time, "*"));
@@ -662,12 +681,14 @@ struct l_times_argv {
 int
 linux_times(struct linux_times_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct timeval tv;
        struct l_times_argv tms;
        struct rusage ru;
        int error;
 
+       KKASSERT(p);
 #ifdef DEBUG
        if (ldebug(times))
                printf(ARGS(times, "*"));
@@ -692,7 +713,7 @@ linux_times(struct linux_times_args *args)
 int
 linux_newuname(struct linux_newuname_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
        struct l_new_utsname utsname;
        char *osrelease, *osname;
 
@@ -701,8 +722,8 @@ linux_newuname(struct linux_newuname_args *args)
                printf(ARGS(newuname, "*"));
 #endif
 
-       osname = linux_get_osname(p);
-       osrelease = linux_get_osrelease(p);
+       osname = linux_get_osname(td);
+       osrelease = linux_get_osrelease(td);
 
        bzero(&utsname, sizeof(utsname));
        strncpy(utsname.sysname, osname, LINUX_MAX_UTSNAME-1);
@@ -815,7 +836,8 @@ linux_waitpid(struct linux_waitpid_args *args)
 int
 linux_wait4(struct linux_wait4_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct wait_args /* {
                int pid;
                int *status;
@@ -824,6 +846,8 @@ linux_wait4(struct linux_wait4_args *args)
        } */ tmp;
        int error, tmpstat;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(wait4))
                printf(ARGS(wait4, "%d, %p, %d, %p"),
@@ -896,7 +920,10 @@ linux_mknod(struct linux_mknod_args *args)
 int
 linux_personality(struct linux_personality_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
+
+       KKASSERT(p);
 #ifdef DEBUG
        if (ldebug(personality))
                printf(ARGS(personality, "%d"), args->per);
@@ -973,12 +1000,15 @@ linux_nice(struct linux_nice_args *args)
 int
 linux_setgroups(struct linux_setgroups_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct ucred *newcred, *oldcred;
        l_gid_t linux_gidset[NGROUPS];
        gid_t *bsd_gidset;
        int ngrp, error;
 
+       KKASSERT(p);
+
        ngrp = args->gidsetsize;
        oldcred = p->p_ucred;
 
@@ -988,7 +1018,7 @@ linux_setgroups(struct linux_setgroups_args *args)
         * Keep cr_groups[0] unchanged to prevent that.
         */
 
-       if ((error = suser_xxx(oldcred, PRISON_ROOT)) != 0)
+       if ((error = suser_cred(oldcred, PRISON_ROOT)) != 0)
                return (error);
 
        if (ngrp >= NGROUPS)
@@ -1022,12 +1052,15 @@ linux_setgroups(struct linux_setgroups_args *args)
 int
 linux_getgroups(struct linux_getgroups_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct ucred *cred;
        l_gid_t linux_gidset[NGROUPS];
        gid_t *bsd_gidset;
        int bsd_gidsetsz, ngrp, error;
 
+       KKASSERT(p);
+
        cred = p->p_ucred;
        bsd_gidset = cred->cr_groups;
        bsd_gidsetsz = cred->cr_ngroups - 1;
@@ -1192,10 +1225,13 @@ linux_sched_setscheduler(struct linux_sched_setscheduler_args *args)
 int
 linux_sched_getscheduler(struct linux_sched_getscheduler_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct sched_getscheduler_args bsd;
        int error;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(sched_getscheduler))
                printf(ARGS(sched_getscheduler, "%d"), args->pid);
@@ -1307,7 +1343,10 @@ linux_reboot(struct linux_reboot_args *args)
 int
 linux_getpid(struct linux_getpid_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
+
+       KKASSERT(p);
 
        p->p_retval[0] = p->p_pid;
        return (0);
@@ -1316,7 +1355,10 @@ linux_getpid(struct linux_getpid_args *args)
 int
 linux_getgid(struct linux_getgid_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
+
+       KKASSERT(p);
 
        p->p_retval[0] = p->p_ucred->cr_rgid;
        return (0);
@@ -1325,7 +1367,10 @@ linux_getgid(struct linux_getgid_args *args)
 int
 linux_getuid(struct linux_getuid_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
+
+       KKASSERT(p);
 
        p->p_retval[0] = p->p_ucred->cr_ruid;
        return (0);
index e54a8c0..70f812c 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.19.2.8 2001/11/07 20:33:55 marcel Exp $
- * $DragonFly: src/sys/emulation/linux/linux_socket.c,v 1.3 2003/06/23 17:55:26 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_socket.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 /* XXX we use functions that might not exist. */
@@ -412,7 +412,8 @@ int linux_connect(struct linux_connect_args *);
 int
 linux_connect(struct linux_connect_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;  /* XXX */
+       struct proc *p = td->td_proc;
        struct linux_connect_args linux_args;
        struct connect_args /* {
                int s;
@@ -423,6 +424,8 @@ linux_connect(struct linux_connect_args *args)
        struct file *fp;
        int error;
 
+       KKASSERT(p);
+
 #ifdef __alpha__
        bcopy(args, &linux_args, sizeof(linux_args));
 #else
@@ -453,7 +456,7 @@ linux_connect(struct linux_connect_args *args)
                        error = so->so_error;
                so->so_emuldata = (void *)1;
        }
-       fdrop(fp, p);
+       fdrop(fp, td);
        return (error);
 }
 
index 4af4f04..8199b07 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_stats.c,v 1.22.2.3 2001/11/05 19:08:23 marcel Exp $
- * $DragonFly: src/sys/emulation/linux/linux_stats.c,v 1.3 2003/06/23 17:55:26 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_stats.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 #include <sys/param.h>
+#include <sys/systm.h>
 #include <sys/conf.h>
 #include <sys/dirent.h>
 #include <sys/file.h>
@@ -41,6 +42,7 @@
 #include <sys/sysctl.h>
 #include <sys/systm.h>
 #include <sys/vnode.h>
+#include <sys/file2.h>
 
 #include <machine/../linux/linux.h>
 #include <machine/../linux/linux_proto.h>
@@ -90,7 +92,7 @@ newstat_copyout(struct stat *buf, void *ubuf)
 int
 linux_newstat(struct linux_newstat_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
        struct stat buf;
        struct nameidata nd;
        int error;
@@ -105,13 +107,13 @@ linux_newstat(struct linux_newstat_args *args)
 #endif
 
        NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | NOOBJ, UIO_USERSPACE,
-           args->path, p);
+           args->path, td);
        error = namei(&nd);
        if (error)
                return (error);
        NDFREE(&nd, NDF_ONLY_PNBUF);
 
-       error = vn_stat(nd.ni_vp, &buf, p);
+       error = vn_stat(nd.ni_vp, &buf, td);
        vput(nd.ni_vp);
        if (error)
                return (error);
@@ -122,7 +124,7 @@ linux_newstat(struct linux_newstat_args *args)
 int
 linux_newlstat(struct linux_newlstat_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
        int error;
        struct stat sb;
        struct nameidata nd;
@@ -137,13 +139,13 @@ linux_newlstat(struct linux_newlstat_args *args)
 #endif
 
        NDINIT(&nd, LOOKUP, NOFOLLOW | LOCKLEAF | NOOBJ, UIO_USERSPACE,
-           args->path, p);
+           args->path, td);
        error = namei(&nd);
        if (error)
                return (error);
        NDFREE(&nd, NDF_ONLY_PNBUF); 
 
-       error = vn_stat(nd.ni_vp, &sb, p);
+       error = vn_stat(nd.ni_vp, &sb, td);
        vput(nd.ni_vp);
        if (error)
                return (error);
@@ -154,12 +156,15 @@ linux_newlstat(struct linux_newlstat_args *args)
 int
 linux_newfstat(struct linux_newfstat_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct filedesc *fdp;
        struct file *fp;
        struct stat buf;
        int error;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(newfstat))
                printf(ARGS(newfstat, "%d, *"), args->fd);
@@ -170,7 +175,7 @@ linux_newfstat(struct linux_newfstat_args *args)
            (fp = fdp->fd_ofiles[args->fd]) == NULL)
                return (EBADF);
 
-       error = fo_stat(fp, &buf, p);
+       error = fo_stat(fp, &buf, td);
        if (!error)
                error = newstat_copyout(&buf, args->buf);
 
@@ -229,7 +234,7 @@ bsd_to_linux_ftype(const char *fstypename)
 int
 linux_statfs(struct linux_statfs_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
        struct mount *mp;
        struct nameidata *ndp;
        struct statfs *bsd_statfs;
@@ -246,7 +251,7 @@ linux_statfs(struct linux_statfs_args *args)
                printf(ARGS(statfs, "%s, *"), args->path);
 #endif
        ndp = &nd;
-       NDINIT(ndp, LOOKUP, FOLLOW, UIO_USERSPACE, args->path, curproc);
+       NDINIT(ndp, LOOKUP, FOLLOW, UIO_USERSPACE, args->path, td);
        error = namei(ndp);
        if (error)
                return error;
@@ -254,7 +259,7 @@ linux_statfs(struct linux_statfs_args *args)
        mp = ndp->ni_vp->v_mount;
        bsd_statfs = &mp->mnt_stat;
        vrele(ndp->ni_vp);
-       error = VFS_STATFS(mp, bsd_statfs, p);
+       error = VFS_STATFS(mp, bsd_statfs, td);
        if (error)
                return error;
        bsd_statfs->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
@@ -275,13 +280,16 @@ linux_statfs(struct linux_statfs_args *args)
 int
 linux_fstatfs(struct linux_fstatfs_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct file *fp;
        struct mount *mp;
        struct statfs *bsd_statfs;
        struct l_statfs linux_statfs;
        int error;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(fstatfs))
                printf(ARGS(fstatfs, "%d, *"), args->fd);
@@ -291,7 +299,7 @@ linux_fstatfs(struct linux_fstatfs_args *args)
                return error;
        mp = ((struct vnode *)fp->f_data)->v_mount;
        bsd_statfs = &mp->mnt_stat;
-       error = VFS_STATFS(mp, bsd_statfs, p);
+       error = VFS_STATFS(mp, bsd_statfs, td);
        if (error)
                return error;
        bsd_statfs->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
@@ -320,7 +328,7 @@ struct l_ustat
 int
 linux_ustat(struct linux_ustat_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
        struct l_ustat lu;
        dev_t dev;
        struct vnode *vp;
@@ -350,7 +358,7 @@ linux_ustat(struct linux_ustat_args *args)
                if (vp->v_mount == NULL)
                        return (EINVAL);
                stat = &(vp->v_mount->mnt_stat);
-               error = VFS_STATFS(vp->v_mount, stat, p);
+               error = VFS_STATFS(vp->v_mount, stat, td);
                if (error)
                        return (error);
 
@@ -397,7 +405,7 @@ stat64_copyout(struct stat *buf, void *ubuf)
 int
 linux_stat64(struct linux_stat64_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
        struct stat buf;
        struct nameidata nd;
        int error;
@@ -412,13 +420,13 @@ linux_stat64(struct linux_stat64_args *args)
 #endif
 
        NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | NOOBJ, UIO_USERSPACE,
-           args->filename, p);
+           args->filename, td);
        error = namei(&nd);
        if (error)
                return (error);
        NDFREE(&nd, NDF_ONLY_PNBUF);
 
-       error = vn_stat(nd.ni_vp, &buf, p);
+       error = vn_stat(nd.ni_vp, &buf, td);
        vput(nd.ni_vp);
        if (error)
                return (error);
@@ -429,7 +437,7 @@ linux_stat64(struct linux_stat64_args *args)
 int
 linux_lstat64(struct linux_lstat64_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
        int error;
        struct stat sb;
        struct nameidata nd;
@@ -444,13 +452,13 @@ linux_lstat64(struct linux_lstat64_args *args)
 #endif
 
        NDINIT(&nd, LOOKUP, NOFOLLOW | LOCKLEAF | NOOBJ, UIO_USERSPACE,
-           args->filename, p);
+           args->filename, td);
        error = namei(&nd);
        if (error)
                return (error);
        NDFREE(&nd, NDF_ONLY_PNBUF); 
 
-       error = vn_stat(nd.ni_vp, &sb, p);
+       error = vn_stat(nd.ni_vp, &sb, td);
        vput(nd.ni_vp);
        if (error)
                return (error);
@@ -461,12 +469,15 @@ linux_lstat64(struct linux_lstat64_args *args)
 int
 linux_fstat64(struct linux_fstat64_args *args)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;
+       struct proc *p = td->td_proc;
        struct filedesc *fdp;
        struct file *fp;
        struct stat buf;
        int error;
 
+       KKASSERT(p);
+
 #ifdef DEBUG
        if (ldebug(fstat64))
                printf(ARGS(fstat64, "%d, *"), args->fd);
@@ -477,7 +488,7 @@ linux_fstat64(struct linux_fstat64_args *args)
            (fp = fdp->fd_ofiles[args->fd]) == NULL)
                return (EBADF);
 
-       error = fo_stat(fp, &buf, p);
+       error = fo_stat(fp, &buf, td);
        if (!error)
                error = stat64_copyout(&buf, args->statbuf);
 
index d1e24cb..6147b6b 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_uid16.c,v 1.4.2.1 2001/10/21 03:57:35 marcel Exp $
- * $DragonFly: src/sys/emulation/linux/linux_uid16.c,v 1.3 2003/06/23 17:55:26 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_uid16.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 #include "opt_compat.h"
@@ -110,7 +110,7 @@ linux_setgroups16(struct linux_setgroups16_args *args)
         * Keep cr_groups[0] unchanged to prevent that.
         */
 
-       if ((error = suser_xxx(oldcred, PRISON_ROOT)) != 0)
+       if ((error = suser_cred(oldcred, PRISON_ROOT)) != 0)
                return (error);
 
        if (ngrp >= NGROUPS)
index 41be4a8..0af8a88 100644 (file)
  *
  *     from: svr4_util.c,v 1.5 1995/01/22 23:44:50 christos Exp
  * $FreeBSD: src/sys/compat/linux/linux_util.c,v 1.12.2.2 2001/11/05 19:08:23 marcel Exp $
- * $DragonFly: src/sys/emulation/linux/linux_util.c,v 1.3 2003/06/23 17:55:27 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_util.c,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 #include <sys/param.h>
 #include <sys/systm.h>
-#include <sys/namei.h>
 #include <sys/proc.h>
+#include <sys/namei.h>
 #include <sys/malloc.h>
 #include <sys/vnode.h>
 
@@ -51,13 +51,13 @@ const char      linux_emul_path[] = "/compat/linux";
  * be in exists.
  */
 int
-linux_emul_find(p, sgp, prefix, path, pbuf, cflag)
-       struct proc     *p;
-       caddr_t          *sgp;          /* Pointer to stackgap memory */
-       const char       *prefix;
-       char             *path;
+linux_emul_find(td, sgp, prefix, path, pbuf, cflag)
+       struct thread   *td;
+       caddr_t         *sgp;           /* Pointer to stackgap memory */
+       const char      *prefix;
+       char            *path;
        char            **pbuf;
-       int               cflag;
+       int             cflag;
 {
        struct nameidata         nd;
        struct nameidata         ndroot;
@@ -66,6 +66,10 @@ linux_emul_find(p, sgp, prefix, path, pbuf, cflag)
        int                      error;
        char                    *ptr, *buf, *cp;
        size_t                   sz, len;
+       struct ucred            *cred;
+
+       KKASSERT(td->td_proc);
+       cred = td->td_proc->p_ucred;
 
        buf = (char *) malloc(MAXPATHLEN, M_TEMP, M_WAITOK);
        *pbuf = path;
@@ -105,7 +109,7 @@ linux_emul_find(p, sgp, prefix, path, pbuf, cflag)
                for (cp = &ptr[len] - 1; *cp != '/'; cp--);
                *cp = '\0';
 
-               NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, p);
+               NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, td);
 
                if ((error = namei(&nd)) != 0) {
                        free(buf, M_TEMP);
@@ -115,7 +119,7 @@ linux_emul_find(p, sgp, prefix, path, pbuf, cflag)
                *cp = '/';
        }
        else {
-               NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, p);
+               NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, td);
 
                if ((error = namei(&nd)) != 0) {
                        free(buf, M_TEMP);
@@ -130,8 +134,8 @@ linux_emul_find(p, sgp, prefix, path, pbuf, cflag)
                 * root directory and never finding it, because "/" resolves
                 * to the emulation root directory. This is expensive :-(
                 */
-               NDINIT(&ndroot, LOOKUP, FOLLOW, UIO_SYSSPACE, linux_emul_path,
-                   p);
+               NDINIT(&ndroot, LOOKUP, FOLLOW, UIO_SYSSPACE,
+                       linux_emul_path, td);
 
                if ((error = namei(&ndroot)) != 0) {
                        /* Cannot happen! */
@@ -141,11 +145,11 @@ linux_emul_find(p, sgp, prefix, path, pbuf, cflag)
                        return error;
                }
 
-               if ((error = VOP_GETATTR(nd.ni_vp, &vat, p->p_ucred, p)) != 0) {
+               if ((error = VOP_GETATTR(nd.ni_vp, &vat, cred, td)) != 0) {
                        goto bad;
                }
 
-               if ((error = VOP_GETATTR(ndroot.ni_vp, &vatroot, p->p_ucred, p))
+               if ((error = VOP_GETATTR(ndroot.ni_vp, &vatroot, cred, td))
                    != 0) {
                        goto bad;
                }
index 594d1aa..a3c2ef7 100644 (file)
@@ -29,7 +29,7 @@
  * from: svr4_util.h,v 1.5 1994/11/18 02:54:31 christos Exp
  * from: linux_util.h,v 1.2 1995/03/05 23:23:50 fvdl Exp
  * $FreeBSD: src/sys/compat/linux/linux_util.h,v 1.12.2.2 2000/11/02 23:31:28 obrien Exp $
- * $DragonFly: src/sys/emulation/linux/linux_util.h,v 1.3 2003/06/23 17:55:27 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_util.h,v 1.4 2003/06/25 03:55:44 dillon Exp $
  */
 
 /*
 static __inline caddr_t stackgap_init(void);
 static __inline void *stackgap_alloc(caddr_t *, size_t);
 
-#define szsigcode (*(curproc->p_sysent->sv_szsigcode))
+#define szsigcode(p) (*((p)->p_sysent->sv_szsigcode))
 
 static __inline caddr_t
 stackgap_init()
 {
-       return (caddr_t)(PS_STRINGS - szsigcode - SPARE_USRSPACE);
+       return (caddr_t)(PS_STRINGS - szsigcode(curproc) - SPARE_USRSPACE);
 }
 
 static __inline void *
@@ -69,7 +69,7 @@ stackgap_alloc(sgp, sz)
        void *p = (void *) *sgp;
 
        sz = ALIGN(sz);
-       if (*sgp + sz > (caddr_t)(PS_STRINGS - szsigcode))
+       if (*sgp + sz > (caddr_t)(PS_STRINGS - szsigcode(curproc)))
                return NULL;
        *sgp += sz;
        return p;
@@ -77,13 +77,13 @@ stackgap_alloc(sgp, sz)
 
 extern const char linux_emul_path[];
 
-int linux_emul_find __P((struct proc *, caddr_t *, const char *, char *, char **, int));
+int linux_emul_find __P((struct thread *, caddr_t *, const char *, char *, char **, int));
 
 #define CHECKALT(sgp, path, i)                                                 \
        do {                                                            \
                int _error;                                             \
                                                                        \
-               _error = linux_emul_find(curproc, sgp, linux_emul_path, path,   \
+               _error = linux_emul_find(curthread, sgp, linux_emul_path, path, \
                    &path, i);                                          \
                if (_error == EFAULT)                                   \
                        return (_error);                                \
@@ -103,9 +103,18 @@ struct __hack
 static __inline int
 unsupported_msg(const char *fname)
 {
-       struct proc *p = curproc;
-       printf("linux: syscall %s is obsoleted or not implemented (pid=%ld)\n",
-           fname, (long)p->p_pid);
+       struct thread *td = curthread;
+       if (td->td_proc) {
+           printf(
+               "linux: syscall %s is obsoleted or not implemented (pid=%d)\n",
+               fname, (int)td->td_proc->p_pid
+           );
+       } else {
+           printf(
+               "linux: syscall %s is obsoleted or not implemented (td=%p)\n",
+               fname, td
+           );
+       }
        return (ENOSYS);
 }
 
index 522d3b1..2ee3a20 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/svr4/svr4_fcntl.c,v 1.7 1999/12/12 10:27:04 newton Exp $
- * $DragonFly: src/sys/emulation/svr4/Attic/svr4_fcntl.c,v 1.4 2003/06/23 18:12:13 dillon Exp $
+ * $DragonFly: src/sys/emulation/svr4/Attic/svr4_fcntl.c,v 1.5 2003/06/25 03:56:09 dillon Exp $
  */
 #include <sys/param.h>
 #include <sys/systm.h>
-#include <sys/namei.h>
 #include <sys/proc.h>
+#include <sys/namei.h>
 #include <sys/file.h>
 #include <sys/stat.h>
 #include <sys/filedesc.h>
@@ -56,8 +56,8 @@
 
 static int svr4_to_bsd_flags __P((int));
 static u_long svr4_to_bsd_cmd __P((u_long));
-static int fd_revoke __P((struct proc *, int));
-static int fd_truncate __P((struct proc *, int, struct flock *));
+static int fd_revoke __P((struct thread *, int));
+static int fd_truncate __P((struct thread *, int, struct flock *));
 static int bsd_to_svr4_flags __P((int));
 static void bsd_to_svr4_flock __P((struct flock *, struct svr4_flock *));
 static void svr4_to_bsd_flock __P((struct svr4_flock *, struct flock *));
@@ -243,14 +243,18 @@ svr4_to_bsd_flock64(iflp, oflp)
 
 
 static int
-fd_revoke(struct proc *p, int fd)
+fd_revoke(struct thread *td, int fd)
 {
-       struct filedesc *fdp = p->p_fd;
+       struct proc *p = td->td_proc;
+       struct filedesc *fdp;
        struct file *fp;
        struct vnode *vp;
        struct vattr vattr;
        int error, *retval;
 
+       KKASSERT(p);
+
+       fdp = p->p_fd;
        retval = p->p_retval;
        if ((u_int)fd >= fdp->fd_nfiles || (fp = fdp->fd_ofiles[fd]) == NULL)
                return EBADF;
@@ -265,11 +269,11 @@ fd_revoke(struct proc *p, int fd)
                goto out;
        }
 
-       if ((error = VOP_GETATTR(vp, &vattr, p->p_ucred, p)) != 0)
+       if ((error = VOP_GETATTR(vp, &vattr, p->p_ucred, td)) != 0)
                goto out;
 
        if (p->p_ucred->cr_uid != vattr.va_uid &&
-           (error = suser_xxx(p->p_ucred, 0)) != 0)
+           (error = suser(p->p_thread)) != 0)
                goto out;
 
        if (vcount(vp) > 1)
@@ -281,9 +285,10 @@ out:
 
 
 static int
-fd_truncate(struct proc *p, int fd, struct flock *flp)
+fd_truncate(struct thread *td, int fd, struct flock *flp)
 {
-       struct filedesc *fdp = p->p_fd;
+       struct proc *p = td->td_proc;
+       struct filedesc *fdp;
        struct file *fp;
        off_t start, length;
        struct vnode *vp;
@@ -291,6 +296,8 @@ fd_truncate(struct proc *p, int fd, struct flock *flp)
        int error, *retval;
        struct ftruncate_args ft;
 
+       KKASSERT(p);
+       fdp = p->p_fd;
        retval = p->p_retval;
 
        /*
@@ -303,7 +310,7 @@ fd_truncate(struct proc *p, int fd, struct flock *flp)
        if (fp->f_type != DTYPE_VNODE || vp->v_type == VFIFO)
                return ESPIPE;
 
-       if ((error = VOP_GETATTR(vp, &vattr, p->p_ucred, p)) != 0)
+       if ((error = VOP_GETATTR(vp, &vattr, p->p_ucred, td)) != 0)
                return error;
 
        length = vattr.va_size;
@@ -339,9 +346,10 @@ fd_truncate(struct proc *p, int fd, struct flock *flp)
 int
 svr4_sys_open(struct svr4_sys_open_args *uap)
 {
-       struct proc *p = curproc;
-       int                     error, retval;
-       struct open_args        cup;
+       struct thread *td = curthread;  /* XXX */
+       struct proc *p = td->td_proc;
+       struct open_args cup;
+       int     error, retval;
 
        caddr_t sg = stackgap_init();
        CHECKALTEXIST(&sg, SCARG(uap, path));
@@ -357,6 +365,7 @@ svr4_sys_open(struct svr4_sys_open_args *uap)
                return error;
        }
 
+       KKASSERT(p);
        retval = p->p_retval[0];
 
        if (!(SCARG(&cup, flags) & O_NOCTTY) && SESS_LEADER(p) &&
@@ -423,13 +432,15 @@ svr4_sys_llseek(struct svr4_sys_llseek_args *v)
 int
 svr4_sys_access(struct svr4_sys_access_args *uap)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;  /* XXX */
+       struct proc *p = td->td_proc;
        struct access_args cup;
        int *retval;
 
        caddr_t sg = stackgap_init();
        CHECKALTEXIST(&sg, SCARG(uap, path));
 
+       KKASSERT(p);
        retval = p->p_retval;
 
        SCARG(&cup, path) = SCARG(uap, path);
@@ -459,12 +470,8 @@ svr4_sys_pread(struct svr4_sys_pread_args *uap)
 
 #if defined(NOTYET)
 int
-svr4_sys_pread64(p, v, retval)
-       register struct proc *p;
-       void *v; 
-       register_t *retval;
+svr4_sys_pread64(struct thread *td, void *v, register_t *retval)
 {
-
        struct svr4_sys_pread64_args *uap = v;
        struct sys_pread_args pra;
 
@@ -502,10 +509,7 @@ svr4_sys_pwrite(struct svr4_sys_pwrite_args *uap)
 
 #if defined(NOTYET)
 int
-svr4_sys_pwrite64(p, v, retval)
-       register struct proc *p;
-       void *v; 
-       register_t *retval;
+svr4_sys_pwrite64(struct thread *td, void *v, register_t *retval)
 {
        struct svr4_sys_pwrite64_args *uap = v;
        struct sys_pwrite_args pwa;
@@ -526,11 +530,13 @@ svr4_sys_pwrite64(p, v, retval)
 int
 svr4_sys_fcntl(struct svr4_sys_fcntl_args *uap)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;  /* XXX */
+       struct proc *p = td->td_proc;
        int                             error;
        struct fcntl_args               fa;
        int                             *retval;
 
+       KKASSERT(p);
        retval = p->p_retval;
 
        SCARG(&fa, fd) = SCARG(uap, fd);
@@ -632,7 +638,7 @@ svr4_sys_fcntl(struct svr4_sys_fcntl_args *uap)
                                if (error)
                                        return error;
                                svr4_to_bsd_flock(&ifl, &fl);
-                               return fd_truncate(p, SCARG(uap, fd), &fl);
+                               return fd_truncate(td, SCARG(uap, fd), &fl);
                        }
 
                case SVR4_F_GETLK64:
@@ -681,11 +687,11 @@ svr4_sys_fcntl(struct svr4_sys_fcntl_args *uap)
                                if (error)
                                        return error;
                                svr4_to_bsd_flock64(&ifl, &fl);
-                               return fd_truncate(p, SCARG(uap, fd), &fl);
+                               return fd_truncate(td, SCARG(uap, fd), &fl);
                        }
 
                case SVR4_F_REVOKE:
-                       return fd_revoke(p, SCARG(uap, fd));
+                       return fd_revoke(td, SCARG(uap, fd));
 
                default:
                        return ENOSYS;
index 6d64012..756dd85 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/svr4/svr4_filio.c,v 1.8 2000/01/15 15:30:44 newton Exp $
- * $DragonFly: src/sys/emulation/svr4/Attic/svr4_filio.c,v 1.3 2003/06/23 17:55:49 dillon Exp $
+ * $DragonFly: src/sys/emulation/svr4/Attic/svr4_filio.c,v 1.4 2003/06/25 03:56:09 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -38,6 +38,7 @@
 #include <sys/filedesc.h>
 #include <sys/poll.h>
 #include <sys/malloc.h>
+#include <sys/file2.h>
 
 #include <sys/sysproto.h>
 
@@ -167,17 +168,21 @@ svr4_sys_write(struct svr4_sys_write_args *uap)
 #endif /* BOGUS */
 
 int
-svr4_fil_ioctl(fp, p, retval, fd, cmd, data)
+svr4_fil_ioctl(fp, td, retval, fd, cmd, data)
        struct file *fp;
-       struct proc *p;
+       struct thread *td;
        register_t *retval;
        int fd;
        u_long cmd;
        caddr_t data;
 {
+       struct proc *p = td->td_proc;
        int error;
        int num;
-       struct filedesc *fdp = p->p_fd;
+       struct filedesc *fdp;
+
+       KKASSERT(p);
+       fdp = p->p_fd;
 
        *retval = 0;
 
@@ -209,7 +214,7 @@ svr4_fil_ioctl(fp, p, retval, fd, cmd, data)
 #ifdef SVR4_DEBUG
                if (cmd == FIOASYNC) DPRINTF(("FIOASYNC\n"));
 #endif
-               error = fo_ioctl(fp, cmd, (caddr_t) &num, p);
+               error = fo_ioctl(fp, cmd, (caddr_t) &num, td);
 
                if (error)
                        return error;
index 2354121..05439b0 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/svr4/svr4_ioctl.c,v 1.6 1999/12/08 12:00:48 newton Exp $
- * $DragonFly: src/sys/emulation/svr4/Attic/svr4_ioctl.c,v 1.5 2003/06/23 18:22:07 dillon Exp $
+ * $DragonFly: src/sys/emulation/svr4/Attic/svr4_ioctl.c,v 1.6 2003/06/25 03:56:09 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -81,12 +81,13 @@ svr4_decode_cmd(cmd, dir, c, num, argsiz)
 int
 svr4_sys_ioctl(struct svr4_sys_ioctl_args *uap)
 {
-       struct proc     *p = curproc;
+       struct thread   *td = curthread;
+       struct proc     *p = td->td_proc;
        int             *retval;
        struct file     *fp;
        struct filedesc *fdp;
        u_long           cmd;
-       int (*fun) __P((struct file *, struct proc *, register_t *,
+       int (*fun) __P((struct file *, struct thread *, register_t *,
                        int, u_long, caddr_t));
 #ifdef DEBUG_SVR4
        char             dir[4];
@@ -94,6 +95,8 @@ svr4_sys_ioctl(struct svr4_sys_ioctl_args *uap)
        int              num;
        int              argsiz;
 
+       KKASSERT(p);
+
        svr4_decode_cmd(SCARG(uap, com), dir, &c, &num, &argsiz);
 
        DPRINTF(("svr4_ioctl[%lx](%d, _IO%s(%c, %d, %d), %p);\n",
@@ -158,5 +161,5 @@ svr4_sys_ioctl(struct svr4_sys_ioctl_args *uap)
                DPRINTF((">>> OUT: so_state = 0x%x\n", so->so_state));
        }
 #endif
-       return (*fun)(fp, p, retval, SCARG(uap, fd), cmd, SCARG(uap, data));
+       return (*fun)(fp, td, retval, SCARG(uap, fd), cmd, SCARG(uap, data));
 }
index 3c1a025..cd7af72 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/svr4/svr4_ioctl.h,v 1.3 1999/08/28 00:51:17 peter Exp $
- * $DragonFly: src/sys/emulation/svr4/Attic/svr4_ioctl.h,v 1.2 2003/06/17 04:28:57 dillon Exp $
+ * $DragonFly: src/sys/emulation/svr4/Attic/svr4_ioctl.h,v 1.3 2003/06/25 03:56:10 dillon Exp $
  */
 
 #ifndef        _SVR4_IOCTL_H_
 #define        SVR4_IOW(g,n,t)         SVR4_IOC(SVR4_IOC_IN,   (g), (n), sizeof(t))
 #define        SVR4_IOWR(g,n,t)        SVR4_IOC(SVR4_IOC_INOUT,(g), (n), sizeof(t))
 
-int    svr4_stream_ti_ioctl __P((struct file *, struct proc *, register_t *,
+int    svr4_stream_ti_ioctl __P((struct file *, struct thread *, register_t *,
                                  int, u_long, caddr_t));
-int    svr4_stream_ioctl    __P((struct file *, struct proc *, register_t *,
+int    svr4_stream_ioctl    __P((struct file *, struct thread *, register_t *,
                                  int, u_long, caddr_t));
-int    svr4_term_ioctl      __P((struct file *, struct proc *, register_t *,
+int    svr4_term_ioctl      __P((struct file *, struct thread *, register_t *,
                                  int, u_long, caddr_t));
-int    svr4_ttold_ioctl     __P((struct file *, struct proc *, register_t *,
+int    svr4_ttold_ioctl     __P((struct file *, struct thread *, register_t *,
                                  int, u_long, caddr_t));
-int    svr4_fil_ioctl       __P((struct file *, struct proc *, register_t *,
+int    svr4_fil_ioctl       __P((struct file *, struct thread *, register_t *,
                                  int, u_long, caddr_t));
-int    svr4_sock_ioctl      __P((struct file *, struct proc *, register_t *,
+int    svr4_sock_ioctl      __P((struct file *, struct thread *, register_t *,
                                  int, u_long, caddr_t));
 
 #endif /* !_SVR4_IOCTL_H_ */
index 361f469..a6daa28 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/svr4/svr4_misc.c,v 1.13.2.7 2003/01/14 21:33:58 dillon Exp $
- * $DragonFly: src/sys/emulation/svr4/Attic/svr4_misc.c,v 1.3 2003/06/23 17:55:49 dillon Exp $
+ * $DragonFly: src/sys/emulation/svr4/Attic/svr4_misc.c,v 1.4 2003/06/25 03:56:10 dillon Exp $
  */
 
 /*
 
 #include <sys/param.h>
 #include <sys/systm.h>
-#include <sys/namei.h>
 #include <sys/dirent.h>
 #include <sys/malloc.h>
 #include <sys/proc.h>
+#include <sys/namei.h>
 #include <sys/file.h>
 #include <sys/stat.h>
 #include <sys/time.h>
@@ -229,7 +229,8 @@ svr4_sys_time(struct svr4_sys_time_args *v)
 int
 svr4_sys_getdents64(struct svr4_sys_getdents64_args *uap)
 {
-       struct proc *p = curproc;
+       struct thread *td = curthread;  /* XXX */
+       struct proc *p = td->td_proc;
        struct dirent *bdp;
        struct vnode *vp;
        caddr_t inp, buf;               /* BSD-format */
@@ -246,6 +247,8 @@ svr4_sys_getdents64(struct svr4_sys_getdents64_args *uap)
        u_long *cookies = NULL, *cookiep;
        int ncookies;
 
+       KKASSERT(p);
+
        DPRINTF(("svr4_sys_getdents64(%d, *, %d)\n",
                p->p_pid, SCARG(uap, fd), SCARG(uap, nbytes)));
        if ((error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) != 0) {
@@ -260,7 +263,7 @@ svr4_sys_getdents64(struct svr4_sys_getdents64_args *uap)
        if (vp->v_type != VDIR)
                return (EINVAL);
 
-       if ((error = VOP_GETATTR(vp, &va, p->p_ucred, p))) {
+       if ((error = VOP_GETATTR(vp, &va