Remove the RCSID macro
[openafs.git] / src / afs / OBSD / osi_misc.c
1 /* 
2  * osi_misc.c
3  *
4  * $Id$
5  */
6
7 /*
8 copyright 2002
9 the regents of the university of michigan
10 all rights reserved
11
12 permission is granted to use, copy, create derivative works 
13 and redistribute this software and such derivative works 
14 for any purpose, so long as the name of the university of 
15 michigan is not used in any advertising or publicity 
16 pertaining to the use or distribution of this software 
17 without specific, written prior authorization.  if the 
18 above copyright notice or any other identification of the 
19 university of michigan is included in any copy of any 
20 portion of this software, then the disclaimer below must 
21 also be included.
22
23 this software is provided as is, without representation 
24 from the university of michigan as to its fitness for any 
25 purpose, and without warranty by the university of 
26 michigan of any kind, either express or implied, including 
27 without limitation the implied warranties of 
28 merchantability and fitness for a particular purpose. the 
29 regents of the university of michigan shall not be liable 
30 for any damages, including special, indirect, incidental, or 
31 consequential damages, with respect to any claim arising 
32 out of or in connection with the use of the software, even 
33 if it has been or is hereafter advised of the possibility of 
34 such damages.
35 */
36
37 /*
38  * Copyright 2000, International Business Machines Corporation and others.
39  * All Rights Reserved.
40  * 
41  * This software has been released under the terms of the IBM Public
42  * License.  For details, see the LICENSE file in the top-level source
43  * directory or online at http://www.openafs.org/dl/license10.html
44  */
45
46 #include <afsconfig.h>
47 #include "afs/param.h"
48
49
50 #include "afs/sysincludes.h"    /* Standard vendor system headers */
51 #include "afs/afsincludes.h"    /* Afs-based standard headers */
52 #include <sys/types.h>
53 #include <sys/malloc.h>
54
55 /*
56  * afs_suser() returns true if the caller is superuser, false otherwise.
57  *
58  * Note that it must NOT set errno.
59  */
60
61 /* 
62  * OpenBSD version of afs_osi_suser() by Jim Rees.
63  * See osi_machdep.h for afs_suser macro. It simply calls afs_osi_suser()
64  * with the creds of the current process.
65  */
66
67 int
68 afs_osi_suser(void *credp)
69 {
70 #ifdef AFS_OBSD35_ENV
71     return (suser_ucred((struct ucred *)credp) ? 0 : 1);
72 #else
73     return (suser((struct ucred *)credp, &curproc->p_acflag) ? 0 : 1);
74 #endif
75 }
76
77 /*
78  * reworked for netbsd and openbsd at 4.0/4.4
79  */
80
81 #if defined(AFS_OBSD42_ENV)
82 /* ripped out MALLOC/FREE */
83
84 void *
85 osi_obsd_Alloc(size_t asize, int cansleep)
86 {
87   void *p;
88   int glocked;
89
90   if (cansleep) {
91     glocked = ISAFS_GLOCK();
92     if (glocked)
93       AFS_GUNLOCK();
94     p = malloc(asize, M_AFSGENERIC, M_WAITOK);
95     if (glocked)
96       AFS_GLOCK();
97   } else {
98     p = malloc(asize, M_AFSGENERIC, M_NOWAIT);
99   }
100
101   return (p);
102 }
103
104 void
105 osi_obsd_Free(void *p, size_t asize)
106 {
107   free(p, M_AFSGENERIC);
108 }
109
110 #else
111 void *
112 osi_obsd_Alloc(size_t asize, int cansleep)
113 {
114   void *p;
115   int glocked;
116
117   if (cansleep) {
118     glocked = ISAFS_GLOCK();
119     if (glocked)
120       AFS_GUNLOCK();
121     MALLOC(p, void *, asize, M_AFSGENERIC, M_WAITOK);
122     if (glocked)
123       AFS_GLOCK();
124   } else {
125     MALLOC(p, void *, asize, M_AFSGENERIC, M_NOWAIT);
126   }
127
128   return (p);
129 }
130
131 void
132 osi_obsd_Free(void *p, size_t asize)
133 {
134   FREE(p, M_AFSGENERIC);
135 }
136 #endif
137
138 #if 0 /* XXX */
139 /* I speculate this usage may be more correct than definitions
140  * in afs_osi_alloc.c, which I discarded successfully for FreeBSD 7+,
141  * and am trying to discard for NetBSD 4.x, but until tested, I'm
142  * not rocking the boat.  Matt.
143  */
144    
145 void
146 osi_FreeLargeSpace(void *p)
147 {
148   osi_obsd_Free(p, 0);
149 }
150
151 void
152 osi_FreeSmallSpace(void *p)
153 {
154   osi_obsd_Free(p, 0);
155 }
156
157 void *
158 osi_AllocLargeSpace(size_t size)
159 {
160   AFS_ASSERT_GLOCK();
161   AFS_STATCNT(osi_AllocLargeSpace);
162   return (osi_obsd_Alloc(size, 1));
163 }
164 #endif
165
166 int
167 afs_syscall_icreate(dev, near_inode, param1, param2, param3, param4, retval)
168      long *retval;
169      long dev, near_inode, param1, param2, param3, param4;
170 {
171     return EINVAL;
172 }
173
174 int
175 afs_syscall_iopen(dev, inode, usrmod, retval)
176      long *retval;
177      int dev, inode, usrmod;
178 {
179     return EINVAL;
180 }
181
182 int
183 afs_syscall_iincdec(dev, inode, inode_p1, amount)
184      int dev, inode, inode_p1, amount;
185 {
186     return EINVAL;
187 }