darwin-xnu/bsd/sys/user.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
   3 *
   4 * @APPLE_LICENSE_HEADER_START@
   5 * 
   6 * The contents of this file constitute Original Code as defined in and
   7 * are subject to the Apple Public Source License Version 1.1 (the
   8 * "License").  You may not use this file except in compliance with the
   9 * License.  Please obtain a copy of the License at
  10 * http://www.apple.com/publicsource and read it before using this file.
  11 * 
  12 * This Original Code and all software distributed under the License are
  13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17 * License for the specific language governing rights and limitations
  18 * under the License.
  19 * 
  20 * @APPLE_LICENSE_HEADER_END@
  21 */
  22/* Copyright (c) 1995, 1997 Apple Computer, Inc. All Rights Reserved */
  23/*
  24 * Copyright (c) 1982, 1986, 1989, 1991, 1993
  25 *      The Regents of the University of California.  All rights reserved.
  26 *
  27 * Redistribution and use in source and binary forms, with or without
  28 * modification, are permitted provided that the following conditions
  29 * are met:
  30 * 1. Redistributions of source code must retain the above copyright
  31 *    notice, this list of conditions and the following disclaimer.
  32 * 2. Redistributions in binary form must reproduce the above copyright
  33 *    notice, this list of conditions and the following disclaimer in the
  34 *    documentation and/or other materials provided with the distribution.
  35 * 3. All advertising materials mentioning features or use of this software
  36 *    must display the following acknowledgement:
  37 *      This product includes software developed by the University of
  38 *      California, Berkeley and its contributors.
  39 * 4. Neither the name of the University nor the names of its contributors
  40 *    may be used to endorse or promote products derived from this software
  41 *    without specific prior written permission.
  42 *
  43 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  44 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  45 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  46 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  47 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  53 * SUCH DAMAGE.
  54 *
  55 *      @(#)user.h      8.2 (Berkeley) 9/23/93
  56 */
  57
  58#ifndef _SYS_USER_H_
  59#define _SYS_USER_H_
  60
  61#include <sys/appleapiopts.h>
  62#ifndef KERNEL
  63/* stuff that *used* to be included by user.h, or is now needed */
  64#include <errno.h>
  65#include <sys/time.h>
  66#include <sys/resource.h>
  67#include <sys/ucred.h>
  68#include <sys/uio.h>
  69#endif
  70#include <sys/resourcevar.h>
  71#ifdef KERNEL_PRIVATE
  72#include <sys/signalvar.h>
  73#endif
  74#include <sys/vm.h>             /* XXX */
  75#include <sys/sysctl.h>
  76 
  77#ifdef KERNEL
  78#ifdef __APPLE_API_PRIVATE
  79#include <sys/eventvar.h>
  80
  81/*
  82 *      Per-thread U area.
  83 */
  84struct uthread {
  85        int     *uu_ar0;                /* address of users saved R0 */
  86
  87        /* syscall parameters, results and catches */
  88        u_int64_t uu_arg[8]; /* arguments to current system call */
  89        int     *uu_ap;                 /* pointer to arglist */
  90    int uu_rval[2];
  91
  92        /* thread exception handling */
  93        int     uu_code;                        /* ``code'' to trap */
  94        char uu_cursig;                 /* p_cursig for exc. */
  95        /* support for select - across system calls */
  96        struct _select {
  97                u_int32_t       *ibits, *obits; /* bits to select on */
  98                uint    nbytes; /* number of bytes in ibits and obits */
  99                wait_queue_set_t wqset;  /* cached across select calls */
 100                size_t allocsize;                /* ...size of select cache */
 101                u_int64_t abstime;
 102                int poll;
 103                int error;
 104                int count;
 105                char * wql;
 106        } uu_select;                    /* saved state for select() */
 107        /* to support continuations */
 108        union {
 109                int uu_nfs_myiod;    /* saved state for nfsd */
 110                struct _kevent_scan {
 111                        kevent_callback_t call; /* per-event callback */
 112                        kevent_continue_t cont; /* whole call continuation */
 113                        uint64_t deadline;      /* computed deadline for operation */
 114                        void *data;             /* caller's private data */
 115                } ss_kevent_scan;               /* saved state for kevent_scan() */
 116                struct _kevent {
 117                        struct _kevent_scan scan;/* space for the generic data */
 118                        struct fileproc *fp;     /* fileproc we hold iocount on */
 119                        int fd;                  /* filedescriptor for kq */
 120                        register_t *retval;      /* place to store return val */
 121                        user_addr_t eventlist;   /* user-level event list address */
 122                        int eventcount;         /* user-level event count */
 123                        int eventout;            /* number of events output */
 124                } ss_kevent;                     /* saved state for kevent() */
 125        } uu_state;
 126  /* internal support for continuation framework */
 127    int (*uu_continuation)(int);
 128    int uu_pri;
 129    int uu_timo;
 130        int uu_flag;
 131        struct proc * uu_proc;
 132        void * uu_userstate;
 133        sigset_t uu_siglist;                            /* signals pending for the thread */
 134        sigset_t  uu_sigwait;                           /*  sigwait on this thread*/
 135        sigset_t  uu_sigmask;                           /* signal mask for the thread */
 136        sigset_t  uu_oldmask;                           /* signal mask saved before sigpause */
 137        thread_t uu_act;
 138        sigset_t  uu_vforkmask;                         /* saved signal mask during vfork */
 139
 140        TAILQ_ENTRY(uthread) uu_list;           /* List of uthreads in proc */
 141
 142        struct kaudit_record            *uu_ar;         /* audit record */
 143        struct task*    uu_aio_task;                    /* target task for async io */
 144
 145  /* network support for dlil layer locking */
 146        u_int32_t       dlil_incremented_read;
 147        lck_mtx_t       *uu_mtx;
 148
 149        int             uu_lowpri_delay;
 150
 151        struct ucred    *uu_ucred;              /* per thread credential */
 152        int             uu_defer_reclaims;
 153        vnode_t         uu_vreclaims;
 154
 155#ifdef JOE_DEBUG
 156        int             uu_iocount;
 157        int             uu_vpindex;
 158        void    *       uu_vps[32];
 159#endif
 160};
 161
 162typedef struct uthread * uthread_t;
 163
 164/* Definition of uu_flag */
 165#define UT_SAS_OLDMASK  0x00000001      /* need to restore mask before pause */
 166#define UT_NO_SIGMASK   0x00000002      /* exited thread; invalid sigmask */
 167#define UT_NOTCANCELPT  0x00000004             /* not a cancelation point */
 168#define UT_CANCEL       0x00000008             /* thread marked for cancel */
 169#define UT_CANCELED     0x00000010            /* thread cancelled */
 170#define UT_CANCELDISABLE 0x00000020            /* thread cancel disabled */
 171
 172#define UT_VFORK        0x02000000      /* thread has vfork children */
 173#define UT_SETUID       0x04000000      /* thread is settugid() */
 174#define UT_WASSETUID    0x08000000      /* thread was settugid() (in vfork) */
 175
 176#endif /* __APPLE_API_PRIVATE */
 177
 178#endif  /* KERNEL */
 179
 180/*
 181 * Per process structure containing data that isn't needed in core
 182 * when the process isn't running (esp. when swapped out).
 183 * This structure may or may not be at the same kernel address
 184 * in all processes.
 185 */
 186 
 187struct  user {
 188  /* NOT USED ANYMORE */
 189};
 190
 191#endif  /* !_SYS_USER_H_ */
 192
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.