1 | /*************************************************************************** |
---|
2 | * |
---|
3 | * Copyright (C) 2001 International Business Machines |
---|
4 | * All rights reserved. |
---|
5 | * |
---|
6 | * This file is part of the GPFS mmfslinux kernel module. |
---|
7 | * |
---|
8 | * Redistribution and use in source and binary forms, with or without |
---|
9 | * modification, are permitted provided that the following conditions |
---|
10 | * are met: |
---|
11 | * |
---|
12 | * 1. Redistributions of source code must retain the above copyright notice, |
---|
13 | * this list of conditions and the following disclaimer. |
---|
14 | * 2. Redistributions in binary form must reproduce the above copyright |
---|
15 | * notice, this list of conditions and the following disclaimer in the |
---|
16 | * documentation and/or other materials provided with the distribution. |
---|
17 | * 3. The name of the author may not be used to endorse or promote products |
---|
18 | * derived from this software without specific prior written |
---|
19 | * permission. |
---|
20 | * |
---|
21 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
---|
22 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
---|
23 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
---|
24 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
---|
25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
---|
26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
---|
27 | * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
---|
28 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
---|
29 | * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
---|
30 | * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
---|
31 | * |
---|
32 | *************************************************************************** */ |
---|
33 | /* @(#)61 1.97.1.1 src/avs/fs/mmfs/ts/kernext/ibm-linux/cxiSharedSeg-plat.h, mmfs, avs_rgpfs24, rgpfs24s003a 5/25/06 02:08:17 */ |
---|
34 | |
---|
35 | #ifndef _h_cxiSharedSeg_plat |
---|
36 | #define _h_cxiSharedSeg_plat |
---|
37 | |
---|
38 | #ifndef _h_cxiSharedSeg |
---|
39 | #error Platform header (XXX-plat.h) should not be included directly |
---|
40 | #endif |
---|
41 | |
---|
42 | #define SHARED_SEGMENT_BASE (UIntPtr(SharedSegmentBase)) |
---|
43 | EXTERN char* SharedSegmentBase; |
---|
44 | |
---|
45 | /* Globals for daemon using swizzled pointers with the shared segment */ |
---|
46 | #ifdef SSEG_SWIZZLE_PTRS |
---|
47 | EXTERNC int initPtrSwizzling(Boolean initKernel); |
---|
48 | |
---|
49 | EXTERN char * SharedSegmentKernelBase; |
---|
50 | EXTERN char * SharedSegmentKernelMax; |
---|
51 | EXTERN Ptrdiff SharedSegmentOffset; |
---|
52 | EXTERN IntPtr SharedSegmentSwizzledSize; |
---|
53 | EXTERN char * SharedSegmentSwizzledBase; |
---|
54 | EXTERN char * SharedSegmentSwizzledMax; |
---|
55 | #endif |
---|
56 | |
---|
57 | #define SEGMENT_MAX_VMALLOC_PERCENT 50/100 |
---|
58 | |
---|
59 | /* ioctl ops */ |
---|
60 | enum kxOps |
---|
61 | { |
---|
62 | RegisterMMFSDaemon = 1, |
---|
63 | WaitCondvar = 2, |
---|
64 | ThreadInitOrTerm = 3, |
---|
65 | SignalOrBroadcastCondvar = 4, |
---|
66 | GetCondWaiters = 5, |
---|
67 | AllocEventWords = 6, |
---|
68 | InitKernelMailboxes = 7, |
---|
69 | EnableIO = 8, |
---|
70 | TerminateMailboxes = 9, |
---|
71 | StackAddrToThreadID = 10, |
---|
72 | kernelTrace = 11, |
---|
73 | GetDiskInfo = 12, |
---|
74 | RegisterMMFSSessionId = 13, |
---|
75 | kernelRecLockReset = 14, |
---|
76 | SetCommState = 15, |
---|
77 | AcquireMutex = 16, |
---|
78 | ReleaseMutex = 17, |
---|
79 | RegisterNodeAddr = 18, |
---|
80 | InitializeRevokeTab = 19, |
---|
81 | RegisterObjType = 20, |
---|
82 | SetTraceLevel = 21, |
---|
83 | kxtraceit = 22, |
---|
84 | kPoll = 23, |
---|
85 | GetLocalSGIdCounter = 24, |
---|
86 | QueueCompletedIO = 25, |
---|
87 | AwaitIOCompletion = 26, |
---|
88 | StartIO = 27, |
---|
89 | GetSimpleLock = 28, |
---|
90 | MapPrivate = 29, |
---|
91 | SetMountInfoByID = 30, |
---|
92 | FreeMailboxStorage = 31, |
---|
93 | RegisterMMFSSeg = 32, |
---|
94 | #ifdef SMB_LOCKS |
---|
95 | BreakOplock = 33, |
---|
96 | #endif |
---|
97 | GetStructSize = 34, |
---|
98 | GetMapCount = 35, |
---|
99 | DefineShSeg = 36, |
---|
100 | SetPrivLevel = 37, |
---|
101 | kernelSendFlock = 38, |
---|
102 | kernelWaitForFlock = 39, |
---|
103 | kernelCommonReclock = 40, |
---|
104 | kernelDoTraceDump = 41, |
---|
105 | SetNPagesAvailable = 42, |
---|
106 | CoreDump = 43, |
---|
107 | PinKernelIOBuffer = 44, |
---|
108 | UnpinKernelIOBuffer = 45, |
---|
109 | ClearMountInfo = 46, |
---|
110 | RetryRecover = 47, |
---|
111 | UnpinAllKernelIOBuffers = 48, |
---|
112 | kernelRLRevokeLock = 49, |
---|
113 | kernelRLRevokeUnLock = 50, |
---|
114 | SetPageoutThread = 51, |
---|
115 | ClearPageoutThread = 52, |
---|
116 | Fattr = 53, |
---|
117 | FsAttr = 54, |
---|
118 | Attr = 55, |
---|
119 | GetACL = 56, |
---|
120 | PutACL = 57, |
---|
121 | Fstat = 58, |
---|
122 | Stat = 59, |
---|
123 | AtomvarInit = 60, |
---|
124 | VFSStatCtl = 61, |
---|
125 | kernelMmapControl = 62, |
---|
126 | kernelMmapInfo = 63, |
---|
127 | CatalogGetMounts = 64, |
---|
128 | GetMountInfoByID = 65, |
---|
129 | uvmount = 66, |
---|
130 | saveThreadInfo = 67, |
---|
131 | kernelMmapFlush = 68, |
---|
132 | InvalidateOSNode = 69, |
---|
133 | HasMountHelper = 70, |
---|
134 | #ifdef P_NFS4 |
---|
135 | PnfsCtl = 71, |
---|
136 | #endif |
---|
137 | AllocVinfo = 72, |
---|
138 | CleanupVinfo = 73, |
---|
139 | kernelMadvise = 74, |
---|
140 | updateOSNode = 75, |
---|
141 | Quotactl = 76, |
---|
142 | CheckThreadStateCtl = 77, |
---|
143 | // unused 78-80 |
---|
144 | #ifdef SSEG_SWIZZLE_PTRS |
---|
145 | InitPtrSwizzling = 81, |
---|
146 | #endif |
---|
147 | CalcMaxSharedSegment = 82, |
---|
148 | AllocSharedMemory = 83, |
---|
149 | FreeSharedMemory = 84, |
---|
150 | FreeAllSharedMemory = 85, |
---|
151 | SetTakeOwnership = 86, |
---|
152 | InitializeNodeHashTab = 87, |
---|
153 | ClampLocks = 88, |
---|
154 | UnClampLocks = 89, |
---|
155 | CheckNTAccess = 90, |
---|
156 | noOp = 91, |
---|
157 | InvalidateSnapshot = 92, |
---|
158 | CleanupStaleNFS = 93, |
---|
159 | GetKernelBoundary = 94, |
---|
160 | SetMultiNode = 95, |
---|
161 | BlockingMutexStatsCtl = 96, |
---|
162 | FindCloseNFS = 97, |
---|
163 | SetMachineSID = 98, |
---|
164 | GetPrivLevel = 99, |
---|
165 | InvalidateVolatileOSNodes = 100, |
---|
166 | ThreadPtrToThreadID = 101, |
---|
167 | DmApiCall = 102, |
---|
168 | DmRemoveSession = 103, |
---|
169 | DmGetSessions = 104, |
---|
170 | DmUpdateSessions = 105, |
---|
171 | AttachSharedMemory = 106, |
---|
172 | DetachSharedMemory = 107, |
---|
173 | XmemXfer = 108, |
---|
174 | ctlDMS = 109, |
---|
175 | QuiesceOperations = 110, |
---|
176 | ResumeOperations = 111, |
---|
177 | #ifdef SMB_LOCKS |
---|
178 | GetShare = 112, |
---|
179 | GetDelegation = 113, |
---|
180 | // unused = 114, |
---|
181 | OplockInit = 115, |
---|
182 | OplockTerm = 116, |
---|
183 | OplockNotify = 117, |
---|
184 | #endif |
---|
185 | SanApiCall = 118, |
---|
186 | GetThreadID = 119, |
---|
187 | GetTimeOfDay = 120, |
---|
188 | kernelLockCallback = 121, |
---|
189 | CheckBuildTime = 122, |
---|
190 | UMount = 123 |
---|
191 | }; |
---|
192 | |
---|
193 | #define kxOp_tostring(ent) \ |
---|
194 | (((ent) == 0)? "UNUSED 0" : \ |
---|
195 | ((ent) == 1)? "RegisterMMFSDaemon" : \ |
---|
196 | ((ent) == 2)? "WaitCondvar" : \ |
---|
197 | ((ent) == 3)? "ThreadInitOrTerm" : \ |
---|
198 | ((ent) == 4)? "SignalOrBroadcastCondvar" : \ |
---|
199 | ((ent) == 5)? "GetCondWaiters" : \ |
---|
200 | ((ent) == 6)? "AllocEventWords" : \ |
---|
201 | ((ent) == 7)? "InitKernelMailboxes" : \ |
---|
202 | ((ent) == 8)? "EnableIO" : \ |
---|
203 | ((ent) == 9)? "TerminateMailboxes" : \ |
---|
204 | ((ent) == 10)? "StackAddrToThreadID" : \ |
---|
205 | ((ent) == 11)? "kernelTrace" : \ |
---|
206 | ((ent) == 12)? "GetDiskInfo" : \ |
---|
207 | ((ent) == 13)? "RegisterMMFSSessionId " : \ |
---|
208 | ((ent) == 14)? "kernelRecLockReset" : \ |
---|
209 | ((ent) == 15)? "SetCommState" : \ |
---|
210 | ((ent) == 16)? "AcquireMutex" : \ |
---|
211 | ((ent) == 17)? "ReleaseMutex" : \ |
---|
212 | ((ent) == 18)? "RegisterNodeAddr" : \ |
---|
213 | ((ent) == 19)? "InitializeRevokeTab" : \ |
---|
214 | ((ent) == 20)? "RegisterObjType" : \ |
---|
215 | ((ent) == 21)? "SetTraceLevel" : \ |
---|
216 | ((ent) == 22)? "kxtraceit" : \ |
---|
217 | ((ent) == 23)? "kPoll" : \ |
---|
218 | ((ent) == 24)? "GetLocalSGIdCounter" : \ |
---|
219 | ((ent) == 25)? "QueueCompletedIO" : \ |
---|
220 | ((ent) == 26)? "AwaitIOCompletion" : \ |
---|
221 | ((ent) == 27)? "StartIO" : \ |
---|
222 | ((ent) == 28)? "GetSimpleLock" : \ |
---|
223 | ((ent) == 29)? "MapPrivate" : \ |
---|
224 | ((ent) == 30)? "SetMountInfoByID" : \ |
---|
225 | ((ent) == 31)? "FreeMailboxStorage" : \ |
---|
226 | ((ent) == 32)? "RegisterMMFSSeg" : \ |
---|
227 | ((ent) == 33)? "BreakOplock" : \ |
---|
228 | ((ent) == 34)? "GetStructSize" : \ |
---|
229 | ((ent) == 35)? "GetMapCount" : \ |
---|
230 | ((ent) == 36)? "DefineShSeg" : \ |
---|
231 | ((ent) == 37)? "SetPrivLevel" : \ |
---|
232 | ((ent) == 38)? "kernelSendFlock" : \ |
---|
233 | ((ent) == 39)? "kernelWaitForFlock" : \ |
---|
234 | ((ent) == 40)? "kernelCommonReclock" : \ |
---|
235 | ((ent) == 41)? "kernelDoTraceDump" : \ |
---|
236 | ((ent) == 42)? "SetNPagesAvailable" : \ |
---|
237 | ((ent) == 43)? "CoreDump" : \ |
---|
238 | ((ent) == 44)? "PinKernelIOBuffer" : \ |
---|
239 | ((ent) == 45)? "UnpinKernelIOBuffer" : \ |
---|
240 | ((ent) == 46)? "ClearMountInfo" : \ |
---|
241 | ((ent) == 47)? "unused" : \ |
---|
242 | ((ent) == 48)? "UnpinAllKernelIOBuffers" : \ |
---|
243 | ((ent) == 49)? "kernelRLRevokeLock" : \ |
---|
244 | ((ent) == 50)? "kernelRLRevokeUnLock" : \ |
---|
245 | ((ent) == 51)? "SetPageoutThread" : \ |
---|
246 | ((ent) == 52)? "ClearPageoutThread" : \ |
---|
247 | ((ent) == 53)? "Fattr" : \ |
---|
248 | ((ent) == 54)? "FsAttr" : \ |
---|
249 | ((ent) == 55)? "Attr" : \ |
---|
250 | ((ent) == 56)? "GetACL" : \ |
---|
251 | ((ent) == 57)? "PutACL" : \ |
---|
252 | ((ent) == 58)? "Fstat" : \ |
---|
253 | ((ent) == 59)? "Stat" : \ |
---|
254 | ((ent) == 60)? "AtomvarInit" : \ |
---|
255 | ((ent) == 61)? "VFSStatCtl" : \ |
---|
256 | ((ent) == 62)? "kernelMmapControl" : \ |
---|
257 | ((ent) == 63)? "kernelMmapInfo" : \ |
---|
258 | ((ent) == 64)? "CatalogGetMounts" : \ |
---|
259 | ((ent) == 65)? "GetMountInfoByID" : \ |
---|
260 | ((ent) == 66)? "uvmount" : \ |
---|
261 | ((ent) == 67)? "saveThreadInfo" : \ |
---|
262 | ((ent) == 68)? "kernelMmapFlush" : \ |
---|
263 | ((ent) == 69)? "InvalidateOSNode" : \ |
---|
264 | ((ent) == 70)? "IsInheritedFD" : \ |
---|
265 | ((ent) == 71)? "pNFS" : \ |
---|
266 | ((ent) == 72)? "AllocVinfo" : \ |
---|
267 | ((ent) == 73)? "CleanupVinfo" : \ |
---|
268 | ((ent) == 74)? "kernelMadvise" : \ |
---|
269 | ((ent) == 75)? "updateOSNode" : \ |
---|
270 | ((ent) == 76)? "Quotactl" : \ |
---|
271 | ((ent) == 77)? "SetPAG" : \ |
---|
272 | ((ent) == 78)? "GetUserMap" : \ |
---|
273 | ((ent) == 79)? "SetUserMap" : \ |
---|
274 | ((ent) == 80)? "GetDosAttr" : \ |
---|
275 | ((ent) == 81)? "SetDosAttr" : \ |
---|
276 | ((ent) == 82)? "CalcMaxSharedSegment" : \ |
---|
277 | ((ent) == 83)? "AllocSharedMemory" : \ |
---|
278 | ((ent) == 84)? "FreeSharedMemory" : \ |
---|
279 | ((ent) == 85)? "FreeAllSharedMemory" : \ |
---|
280 | ((ent) == 86)? "SetTakeOwnership" : \ |
---|
281 | ((ent) == 87)? "InitializeNodeHashTab" : \ |
---|
282 | ((ent) == 88)? "unused" : \ |
---|
283 | ((ent) == 89)? "unused" : \ |
---|
284 | ((ent) == 90)? "CheckNTAccess" : \ |
---|
285 | ((ent) == 91)? "noOp" : \ |
---|
286 | ((ent) == 92)? "InvalidateSnapshot" : \ |
---|
287 | ((ent) == 93)? "CleanupStaleNFS" : \ |
---|
288 | ((ent) == 94)? "GetKernelBoundary" : \ |
---|
289 | ((ent) == 95)? "SetMultiNode" : \ |
---|
290 | ((ent) == 96)? "BlockingMutexStatsCtl" : \ |
---|
291 | ((ent) == 97)? "FindCloseNFS" : \ |
---|
292 | ((ent) == 98)? "SetMachineSID" : \ |
---|
293 | ((ent) == 99)? "GetPrivLevel" : \ |
---|
294 | ((ent) == 100)? "InvalidateVolatileOSNodes" : \ |
---|
295 | ((ent) == 101)? "ThreadPtrToThreadID" : \ |
---|
296 | ((ent) == 102)? "DmApiCall" : \ |
---|
297 | ((ent) == 103)? "DmRemoveSession" : \ |
---|
298 | ((ent) == 104)? "DmGetSessions" : \ |
---|
299 | ((ent) == 105)? "DmUpdateSessions" : \ |
---|
300 | ((ent) == 106)? "AttachSharedMemory" : \ |
---|
301 | ((ent) == 107)? "DetachSharedMemory" : \ |
---|
302 | ((ent) == 108)? "XmemXfer" : \ |
---|
303 | ((ent) == 109)? "startDMS" : \ |
---|
304 | ((ent) == 110)? "QuiesceOperations" : \ |
---|
305 | ((ent) == 111)? "ResumeOperations" : \ |
---|
306 | ((ent) == 112)? "GetShare" : \ |
---|
307 | ((ent) == 113)? "GetDelegation" : \ |
---|
308 | ((ent) == 114)? "unused" : \ |
---|
309 | ((ent) == 115)? "OplockInit" : \ |
---|
310 | ((ent) == 116)? "OplockTerm" : \ |
---|
311 | ((ent) == 117)? "OplockNotify" : \ |
---|
312 | ((ent) == 118)? "SanApiCall" : \ |
---|
313 | ((ent) == 119)? "GetThreadID" : \ |
---|
314 | ((ent) == 120)? "GetTimeOfDay" : \ |
---|
315 | ((ent) == 121)? "kernelLockCallback" : \ |
---|
316 | ((ent) == 122)? "CheckBuildTime" : \ |
---|
317 | ((ent) == 123)? "UMount" : \ |
---|
318 | "??") |
---|
319 | |
---|
320 | #define MAX_SS_IOCTL_OPS 123 |
---|
321 | |
---|
322 | struct kxArgs |
---|
323 | { |
---|
324 | long arg1; |
---|
325 | long arg2; |
---|
326 | long arg3; |
---|
327 | long arg4; |
---|
328 | long arg5; |
---|
329 | }; |
---|
330 | |
---|
331 | /* Remapping structure for handling 32-bit API calls in 64-bit GPFS */ |
---|
332 | struct kxArgs32 |
---|
333 | { |
---|
334 | UInt32 arg1; |
---|
335 | UInt32 arg2; |
---|
336 | UInt32 arg3; |
---|
337 | UInt32 arg4; |
---|
338 | UInt32 arg5; |
---|
339 | }; |
---|
340 | |
---|
341 | #ifndef GPFS_SUPER_MAGIC |
---|
342 | /* ASCII code for "GPFS" in the struct statfs f_type field */ |
---|
343 | /* This value must match same define in gpfs.h */ |
---|
344 | #define GPFS_SUPER_MAGIC 0x47504653 |
---|
345 | #endif |
---|
346 | |
---|
347 | #ifdef __cplusplus |
---|
348 | extern "C" |
---|
349 | { |
---|
350 | #endif |
---|
351 | int ss_init(); |
---|
352 | void gpfs_proc_export_init(void); |
---|
353 | void gpfs_proc_export_term(void); |
---|
354 | void InitSharedMemory(); |
---|
355 | void TermSharedMemory(); |
---|
356 | void CleanUpSharedMemory(); |
---|
357 | #ifdef API_32BIT |
---|
358 | void gpfs_reg_ioctl32(); |
---|
359 | void gpfs_unreg_ioctl32(); |
---|
360 | #endif /* API_32BIT */ |
---|
361 | #ifdef __cplusplus |
---|
362 | } |
---|
363 | #endif |
---|
364 | |
---|
365 | #define ASSERTBASESEG(ADDR, REA, TAG) |
---|
366 | |
---|
367 | #ifdef GPFS_ARCH_IA64 |
---|
368 | #define SET_PRIVILEGE_LEVEL() \ |
---|
369 | int fd_x; \ |
---|
370 | fd_x = open(GPFS_DEVNAME, O_RDWR); \ |
---|
371 | if (fd_x > 0) \ |
---|
372 | { \ |
---|
373 | ioctl(fd_x, SetPrivLevel, 1); \ |
---|
374 | close(fd_x); \ |
---|
375 | } |
---|
376 | #else |
---|
377 | #define SET_PRIVILEGE_LEVEL() (NOOP) |
---|
378 | #endif |
---|
379 | |
---|
380 | #ifdef __cplusplus |
---|
381 | EXTERNC int (*ss_ioctl_op[MAX_SS_IOCTL_OPS+1])(...); |
---|
382 | #else |
---|
383 | EXTERNC int (*ss_ioctl_op[MAX_SS_IOCTL_OPS+1])(); |
---|
384 | #endif /* __cplusplus */ |
---|
385 | |
---|
386 | struct cxiMemoryMapping_t; |
---|
387 | |
---|
388 | /* Compute how large the total size shared segment |
---|
389 | * is allowed to grow, based on a desired size. A value of 0 for |
---|
390 | * desiredBytes means to compute the default maximum size. |
---|
391 | */ |
---|
392 | EXTERNC int cxiCalcMaxSharedSegment(int desiredBytes, int* actualBytesP); |
---|
393 | |
---|
394 | EXTERNC int cxiAllocSharedMemory(struct cxiMemoryMapping_t *mappingP, |
---|
395 | Boolean isSharedSegment); |
---|
396 | EXTERNC int cxiFreeSharedMemory(struct cxiMemoryMapping_t *mappingP, |
---|
397 | Boolean isSharedSegment); |
---|
398 | EXTERNC int cxiAttachSharedMemory(struct cxiMemoryMapping_t *mappingP, |
---|
399 | Boolean isSharedSegment); |
---|
400 | EXTERNC int cxiDetachSharedMemory(struct cxiMemoryMapping_t *mappingP, |
---|
401 | Boolean isSharedSegment); |
---|
402 | #ifdef SSEG_SWIZZLE_PTRS |
---|
403 | EXTERNC int cxiRecordSharedMemory(struct cxiMemoryMapping_t *mappingP); |
---|
404 | #endif |
---|
405 | |
---|
406 | /* get a core dump */ |
---|
407 | EXTERNC int kxCoreDump(long sig, void *info, struct ucontext *sc, |
---|
408 | char *filenameP); |
---|
409 | |
---|
410 | /* Map a section of memory MAP_PRIVATE */ |
---|
411 | EXTERNC int kxMapPrivate(char *inAddr, unsigned long len, unsigned long prot, |
---|
412 | char **outAddr); |
---|
413 | |
---|
414 | /* Kernel calls implemented in portability layer */ |
---|
415 | EXTERNC int kxPoll(void* fdListP, int nFDs, int timeoutMS); |
---|
416 | EXTERNC int kxGetACL(char *pathname, int flags, void *aclP); |
---|
417 | EXTERNC int kxPutACL(char *pathname, int flags, void *aclP); |
---|
418 | EXTERNC int kxMadvise(void* addr, size_t len, int advice); |
---|
419 | #ifdef SMB_LOCKS |
---|
420 | EXTERNC int setSMBOpenLockControl(void *vP, void *infoP, int command, |
---|
421 | int lockmode); |
---|
422 | EXTERNC int setSMBOplock(void *vP, void *infoP, int accessWant, int oplockWant, |
---|
423 | void *breakArgP, int *oplockGrantedP, Boolean isAsync); |
---|
424 | EXTERNC int kxGetShare(int fd, unsigned int share, unsigned int deny); |
---|
425 | EXTERNC int kxGetDelegation(int fd, unsigned int delegate_access, |
---|
426 | void *cb_token, void *cookie); |
---|
427 | #endif |
---|
428 | #ifdef GPFS_QUOTACTL |
---|
429 | EXTERNC int kxQuotactl(char *pathname, int cmd, int qid, void *bufferP); |
---|
430 | #endif |
---|
431 | EXTERNC int kxGetTimeOfDay(cxiTimeStruc_t *tP); |
---|
432 | EXTERNC cxiThreadId kxGetThreadID(); |
---|
433 | EXTERNC int kxUMount(int flag, char *pathname, int force, int *ret_err); |
---|
434 | |
---|
435 | #if defined(GPFS_GPL) |
---|
436 | #if defined(GPFS_ARCH_IA64) || defined(GPFS_ARCH_X86_64) |
---|
437 | /* stat64 isn't defined in IA64 kernel source */ |
---|
438 | /* stat64 only relevant to 32-bit binaries with x86-64 (asm/ia32.h) */ |
---|
439 | #define stat64 stat |
---|
440 | #endif /* GPFS_ARCH_IA64 || GPFS_ARCH_X86_64 */ |
---|
441 | #endif /* GPFS_GPL*/ |
---|
442 | |
---|
443 | struct stat64; |
---|
444 | EXTERNC int tsstat(char *pathname, struct stat64 *statP); |
---|
445 | EXTERNC int tsfstat(int fileDesc, struct stat64 *statP); |
---|
446 | |
---|
447 | #endif /* _h_cxiSharedSeg_plat */ |
---|
448 | |
---|
449 | |
---|