1/* 2 * Copyright (c) 2004, 2006 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23#include <stdarg.h> 24 25int __FCNTL(int, int, void *); 26 27/* 28 * Stub function to account for the differences in the size of the third 29 * argument when int and void * are different sizes. Also add pthread 30 * cancelability. 31 * 32 * This is for LP64 only. 33 */ 34int 35fcntl(int fd, int cmd, ...) 36{ 37 va_list ap; 38 void *arg; 39 40 va_start(ap, cmd); 41 switch(cmd) { 42 case F_GETLK: 43 case F_SETLK: 44 case F_SETLKW: 45 case F_SETLKWTIMEOUT: 46 case F_PREALLOCATE: 47 case F_SETSIZE: 48 case F_RDADVISE: 49 case F_LOG2PHYS: 50 case F_LOG2PHYS_EXT: 51 case F_GETPATH: 52 case F_GETPATH_MTMINFO: 53 case F_PATHPKG_CHECK: 54 case F_OPENFROM: 55 case F_UNLINKFROM: 56 case F_ADDSIGS: 57 case F_ADDFILESIGS: 58 case F_FINDSIGS: 59 arg = va_arg(ap, void *); 60 break; 61 default: 62 arg = (void *)((unsigned long)va_arg(ap, int)); 63 break; 64 } 65 va_end(ap); 66 return (__FCNTL(fd, cmd, arg)); 67} 68