[16] | 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 | |
---|