Annotation of XNU/bsd/dev/i386/stubs.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 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: /*
        !            23:  * Copyright (c) 1997 by Apple Computer, Inc., all rights reserved
        !            24:  * Copyright (c) 1993 NeXT Computer, Inc.
        !            25:  *
        !            26:  */
        !            27: 
        !            28: #include <sys/param.h>
        !            29: #include <sys/systm.h>
        !            30: #include <sys/buf.h>
        !            31: #include <sys/ioctl.h>
        !            32: #include <sys/tty.h>
        !            33: #include <sys/conf.h>
        !            34: #include <sys/proc.h>
        !            35: #include <sys/user.h>
        !            36: #include <kern/task.h>
        !            37: #include <kern/thread.h>
        !            38: #include <kern/thread_act.h>
        !            39: #include <vm/vm_map.h>
        !            40: 
        !            41: 
        !            42: /* 
        !            43:  * copy a null terminated string from the kernel address space into
        !            44:  * the user address space.
        !            45:  *   - if the user is denied write access, return EFAULT.
        !            46:  *   - if the end of string isn't found before
        !            47:  *     maxlen bytes are copied,  return ENAMETOOLONG,
        !            48:  *     indicating an incomplete copy.
        !            49:  *   - otherwise, return 0, indicating success.
        !            50:  * the number of bytes copied is always returned in lencopied.
        !            51:  */
        !            52: int
        !            53: copyoutstr(from, to, maxlen, lencopied)
        !            54:     void * from, * to;
        !            55:     size_t maxlen, *lencopied;
        !            56: {
        !            57:        int slen,len,error=0;
        !            58: 
        !            59:        slen = strlen(from) + 1;
        !            60: 
        !            61:        len = min(maxlen,slen);
        !            62:        if (copyout(from, to, len))
        !            63:                error = EIO;
        !            64:        *lencopied = len;
        !            65: 
        !            66:        return error;
        !            67: }
        !            68: 
        !            69: 
        !            70: /* 
        !            71:  * copy a null terminated string from one point to another in 
        !            72:  * the kernel address space.
        !            73:  *   - no access checks are performed.
        !            74:  *   - if the end of string isn't found before
        !            75:  *     maxlen bytes are copied,  return ENAMETOOLONG,
        !            76:  *     indicating an incomplete copy.
        !            77:  *   - otherwise, return 0, indicating success.
        !            78:  * the number of bytes copied is always returned in lencopied.
        !            79:  */
        !            80: /* from ppc/fault_copy.c -Titan1T4 VERSION  */
        !            81: int
        !            82: copystr(vfrom, vto, maxlen, lencopied)
        !            83:     register void * vfrom, *vto;
        !            84:     size_t maxlen, *lencopied;
        !            85: {
        !            86:     register unsigned l;
        !            87:     int error;
        !            88: caddr_t from, to;
        !            89: 
        !            90:        from = vfrom;
        !            91:        to = vto;
        !            92:     for (l = 0; l < maxlen; l++)
        !            93:         if ((*to++ = *from++) == '\0') {
        !            94:             if (lencopied)
        !            95:                 *lencopied = l + 1;
        !            96:             return 0;
        !            97:         }
        !            98:     if (lencopied)
        !            99:        *lencopied = maxlen;
        !           100:     return ENAMETOOLONG;
        !           101: }
        !           102: 
        !           103: int copywithin(src, dst, count)
        !           104: void  * src, *dst;
        !           105: size_t count;
        !           106: {
        !           107:        bcopy(src,dst,count);
        !           108:        return 0;
        !           109: }
        !           110: 
        !           111: cpu_number() {return(0);}
        !           112: 
        !           113: set_bsduthreadargs(thread_t th, void * pcb, void *ignored_arg)
        !           114: {
        !           115: struct uthread * ut;
        !           116: 
        !           117:        ut = get_bsdthread_info(th);
        !           118:        ut->uu_ar0 = (int *)pcb;
        !           119: 
        !           120:        return(1);
        !           121: }
        !           122: 
        !           123: void *
        !           124: get_bsduthreadarg(thread_t th)
        !           125: {
        !           126: struct uthread *ut;
        !           127:        ut = get_bsdthread_info(th);
        !           128:        return((void *)(ut->uu_arg));
        !           129: }
        !           130: 
        !           131: int *
        !           132: get_bsduthreadrval(thread_act_t th)
        !           133: {
        !           134: struct uthread *ut;
        !           135:        ut = get_bsdthread_info(th);
        !           136:        return(&ut->uu_rval[0]);
        !           137: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.