shlibafssetpag-20051015
[openafs.git] / src / sys / setpag.c
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  *
9  * This file contains the lsetpag system call.  (setpag is handled by the
10  * rmtsys layer and turned into either setpag or a remote call as is
11  * appropriate.)  It is kept separate to allow for the creation of a simple
12  * shared library containing only setpag.
13  */
14
15 #include <afsconfig.h>
16 #include <afs/param.h>
17
18 RCSID
19     ("$Header$");
20
21 #include <afs/afs_args.h>
22 #if defined(AFS_SUN_ENV) && !defined(AFS_SUN5_ENV)
23 #include <unistd.h>
24 #else
25 #include <stdio.h>
26 #endif
27 #include "afssyscalls.h"
28
29 #ifdef AFS_AIX32_ENV
30 /*
31  * in VRMIX, system calls look just like function calls, so we don't
32  * need to do anything!
33  */
34
35 #else
36 #if defined(AFS_SGI_ENV)
37
38 #pragma weak xlsetpag = lsetpag
39
40 int
41 lsetpag(void)
42 {
43     return (syscall(AFS_SETPAG));
44 }
45
46 #else /* AFS_SGI_ENV */
47
48 int
49 lsetpag(void)
50 {
51     int errcode, rval;
52
53 #ifdef AFS_LINUX20_ENV
54     rval = proc_afs_syscall(AFSCALL_SETPAG,0,0,0,0,&errcode);
55     
56     if(rval)
57       errcode = syscall(AFS_SYSCALL, AFSCALL_SETPAG);
58 #else
59     errcode = syscall(AFS_SYSCALL, AFSCALL_SETPAG);
60 #endif
61     
62     return (errcode);
63 }
64
65 #endif /* !AFS_SGI_ENV */
66 #endif /* !AFS_AIX32_ENV */