Add linux-libspl branch

This commit is contained in:
Brian Behlendorf 2008-12-05 16:59:15 -08:00
parent 5b29fa2d78
commit b0887ddcd7
13 changed files with 971 additions and 18 deletions

View File

@ -1,3 +1 @@
gcc-branch zfs-branch
fix-branch
feature-branch

19
.topmsg
View File

@ -1,19 +1,8 @@
From: Brian Behlendorf <behlendorf1@llnl.gov> From: Brian Behlendorf <behlendorf1@llnl.gov>
Subject: [PATCH] zfs branch Subject: [PATCH] linux libspl
Merged result of all changes which are relevant to both Solaris All changes needed for the libspl layer. This includes modifications
and Linux builds of the ZFS code. These are changes where there to files directly copied from OpenSolaris and the addition of new
is a reasonable chance they will be accepted upstream. files needed to fill in the gaps.
Additionally, since this is effectively the root of the linux
ZFS tree the core linux build system is added here. This
includes autogen.sh, configure.ac, m4 macros, some scripts/*,
and makefiles for all the core ZFS components. Linux-only
features which require tweaks to the build system should appear
on the relevant topic branches. All autotools products which
result from autogen.sh are commited to the linux-configure-branch.
This branch also contains the META, ChangeLog, AUTHORS,
README, and GIT files.
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>

View File

View File

@ -0,0 +1,47 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _PORT_SYS_DEBUG_H
#define _PORT_SYS_DEBUG_H
#include <assert.h>
/* This definition is copied from assert.h. */
#if defined(__STDC__)
#if __STDC_VERSION__ - 0 >= 199901L
#define zp_verify(EX) (void)((EX) || \
(__assert_c99(#EX, __FILE__, __LINE__, __func__), 0))
#else
#define zp_verify(EX) (void)((EX) || (__assert(#EX, __FILE__, __LINE__), 0))
#endif /* __STDC_VERSION__ - 0 >= 199901L */
#else
#define zp_verify(EX) (void)((EX) || (_assert("EX", __FILE__, __LINE__), 0))
#endif /* __STDC__ */
#define VERIFY(EX) zp_verify(EX)
#define ASSERT(EX) assert(EX)
#endif

View File

@ -0,0 +1,32 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_FEATURE_TESTS_H
#define _SYS_FEATURE_TESTS_H
#define __NORETURN __attribute__((__noreturn__))
#endif

View File

@ -0,0 +1,34 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SOL_SYS_INTTYPES_H
#define _SOL_SYS_INTTYPES_H
#include <inttypes.h>
#define _INT64_TYPE
#endif

View File

@ -0,0 +1,482 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_ISA_DEFS_H
#define _SYS_ISA_DEFS_H
/*
* This header file serves to group a set of well known defines and to
* set these for each instruction set architecture. These defines may
* be divided into two groups; characteristics of the processor and
* implementation choices for Solaris on a processor.
*
* Processor Characteristics:
*
* _LITTLE_ENDIAN / _BIG_ENDIAN:
* The natural byte order of the processor. A pointer to an int points
* to the least/most significant byte of that int.
*
* _STACK_GROWS_UPWARD / _STACK_GROWS_DOWNWARD:
* The processor specific direction of stack growth. A push onto the
* stack increases/decreases the stack pointer, so it stores data at
* successively higher/lower addresses. (Stackless machines ignored
* without regrets).
*
* _LONG_LONG_HTOL / _LONG_LONG_LTOH:
* A pointer to a long long points to the most/least significant long
* within that long long.
*
* _BIT_FIELDS_HTOL / _BIT_FIELDS_LTOH:
* The C compiler assigns bit fields from the high/low to the low/high end
* of an int (most to least significant vs. least to most significant).
*
* _IEEE_754:
* The processor (or supported implementations of the processor)
* supports the ieee-754 floating point standard. No other floating
* point standards are supported (or significant). Any other supported
* floating point formats are expected to be cased on the ISA processor
* symbol.
*
* _CHAR_IS_UNSIGNED / _CHAR_IS_SIGNED:
* The C Compiler implements objects of type `char' as `unsigned' or
* `signed' respectively. This is really an implementation choice of
* the compiler writer, but it is specified in the ABI and tends to
* be uniform across compilers for an instruction set architecture.
* Hence, it has the properties of a processor characteristic.
*
* _CHAR_ALIGNMENT / _SHORT_ALIGNMENT / _INT_ALIGNMENT / _LONG_ALIGNMENT /
* _LONG_LONG_ALIGNMENT / _DOUBLE_ALIGNMENT / _LONG_DOUBLE_ALIGNMENT /
* _POINTER_ALIGNMENT / _FLOAT_ALIGNMENT:
* The ABI defines alignment requirements of each of the primitive
* object types. Some, if not all, may be hardware requirements as
* well. The values are expressed in "byte-alignment" units.
*
* _MAX_ALIGNMENT:
* The most stringent alignment requirement as specified by the ABI.
* Equal to the maximum of all the above _XXX_ALIGNMENT values.
*
* _ALIGNMENT_REQUIRED:
* True or false (1 or 0) whether or not the hardware requires the ABI
* alignment.
*
* _LONG_LONG_ALIGNMENT_32
* The 32-bit ABI supported by a 64-bit kernel may have different
* alignment requirements for primitive object types. The value of this
* identifier is expressed in "byte-alignment" units.
*
* _HAVE_CPUID_INSN
* This indicates that the architecture supports the 'cpuid'
* instruction as defined by Intel. (Intel allows other vendors
* to extend the instruction for their own purposes.)
*
*
* Implementation Choices:
*
* _ILP32 / _LP64:
* This specifies the compiler data type implementation as specified in
* the relevant ABI. The choice between these is strongly influenced
* by the underlying hardware, but is not absolutely tied to it.
* Currently only two data type models are supported:
*
* _ILP32:
* Int/Long/Pointer are 32 bits. This is the historical UNIX
* and Solaris implementation. Due to its historical standing,
* this is the default case.
*
* _LP64:
* Long/Pointer are 64 bits, Int is 32 bits. This is the chosen
* implementation for 64-bit ABIs such as SPARC V9.
*
* _I32LPx:
* A compilation environment where 'int' is 32-bit, and
* longs and pointers are simply the same size.
*
* In all cases, Char is 8 bits and Short is 16 bits.
*
* _SUNOS_VTOC_8 / _SUNOS_VTOC_16 / _SVR4_VTOC_16:
* This specifies the form of the disk VTOC (or label):
*
* _SUNOS_VTOC_8:
* This is a VTOC form which is upwardly compatible with the
* SunOS 4.x disk label and allows 8 partitions per disk.
*
* _SUNOS_VTOC_16:
* In this format the incore vtoc image matches the ondisk
* version. It allows 16 slices per disk, and is not
* compatible with the SunOS 4.x disk label.
*
* Note that these are not the only two VTOC forms possible and
* additional forms may be added. One possible form would be the
* SVr4 VTOC form. The symbol for that is reserved now, although
* it is not implemented.
*
* _SVR4_VTOC_16:
* This VTOC form is compatible with the System V Release 4
* VTOC (as implemented on the SVr4 Intel and 3b ports) with
* 16 partitions per disk.
*
*
* _DMA_USES_PHYSADDR / _DMA_USES_VIRTADDR
* This describes the type of addresses used by system DMA:
*
* _DMA_USES_PHYSADDR:
* This type of DMA, used in the x86 implementation,
* requires physical addresses for DMA buffers. The 24-bit
* addresses used by some legacy boards is the source of the
* "low-memory" (<16MB) requirement for some devices using DMA.
*
* _DMA_USES_VIRTADDR:
* This method of DMA allows the use of virtual addresses for
* DMA transfers.
*
* _FIRMWARE_NEEDS_FDISK / _NO_FDISK_PRESENT
* This indicates the presence/absence of an fdisk table.
*
* _FIRMWARE_NEEDS_FDISK
* The fdisk table is required by system firmware. If present,
* it allows a disk to be subdivided into multiple fdisk
* partitions, each of which is equivalent to a separate,
* virtual disk. This enables the co-existence of multiple
* operating systems on a shared hard disk.
*
* _NO_FDISK_PRESENT
* If the fdisk table is absent, it is assumed that the entire
* media is allocated for a single operating system.
*
* _HAVE_TEM_FIRMWARE
* Defined if this architecture has the (fallback) option of
* using prom_* calls for doing I/O if a suitable kernel driver
* is not available to do it.
*
* _DONT_USE_1275_GENERIC_NAMES
* Controls whether or not device tree node names should
* comply with the IEEE 1275 "Generic Names" Recommended
* Practice. With _DONT_USE_GENERIC_NAMES, device-specific
* names identifying the particular device will be used.
*
* __i386_COMPAT
* This indicates whether the i386 ABI is supported as a *non-native*
* mode for the platform. When this symbol is defined:
* - 32-bit xstat-style system calls are enabled
* - 32-bit xmknod-style system calls are enabled
* - 32-bit system calls use i386 sizes -and- alignments
*
* Note that this is NOT defined for the i386 native environment!
*
* __x86
* This is ONLY a synonym for defined(__i386) || defined(__amd64)
* which is useful only insofar as these two architectures share
* common attributes. Analogous to __sparc.
*
* _PSM_MODULES
* This indicates whether or not the implementation uses PSM
* modules for processor support, reading /etc/mach from inside
* the kernel to extract a list.
*
* _RTC_CONFIG
* This indicates whether or not the implementation uses /etc/rtc_config
* to configure the real-time clock in the kernel.
*
* _UNIX_KRTLD
* This indicates that the implementation uses a dynamically
* linked unix + krtld to form the core kernel image at boot
* time, or (in the absence of this symbol) a prelinked kernel image.
*
* _OBP
* This indicates the firmware interface is OBP.
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
* The following set of definitions characterize Solaris on AMD's
* 64-bit systems.
*/
#if defined(__x86_64) || defined(__amd64)
#if !defined(__amd64)
#define __amd64 /* preferred guard */
#endif
#if !defined(__x86)
#define __x86
#endif
/*
* Define the appropriate "processor characteristics"
*/
#define _LITTLE_ENDIAN
#define _STACK_GROWS_DOWNWARD
#define _LONG_LONG_LTOH
#define _BIT_FIELDS_LTOH
#define _IEEE_754
#define _CHAR_IS_SIGNED
#define _BOOL_ALIGNMENT 1
#define _CHAR_ALIGNMENT 1
#define _SHORT_ALIGNMENT 2
#define _INT_ALIGNMENT 4
#define _FLOAT_ALIGNMENT 4
#define _FLOAT_COMPLEX_ALIGNMENT 4
#define _LONG_ALIGNMENT 8
#define _LONG_LONG_ALIGNMENT 8
#define _DOUBLE_ALIGNMENT 8
#define _DOUBLE_COMPLEX_ALIGNMENT 8
#define _LONG_DOUBLE_ALIGNMENT 16
#define _LONG_DOUBLE_COMPLEX_ALIGNMENT 16
#define _POINTER_ALIGNMENT 8
#define _MAX_ALIGNMENT 16
#define _ALIGNMENT_REQUIRED 1
/*
* Different alignment constraints for the i386 ABI in compatibility mode
*/
#define _LONG_LONG_ALIGNMENT_32 4
/*
* Define the appropriate "implementation choices".
*/
#if !defined(_LP64)
#define _LP64
#endif
#if !defined(_I32LPx) && defined(_KERNEL)
#define _I32LPx
#endif
#define _MULTI_DATAMODEL
#define _SUNOS_VTOC_16
#define _DMA_USES_PHYSADDR
#define _FIRMWARE_NEEDS_FDISK
#define __i386_COMPAT
#define _PSM_MODULES
#define _RTC_CONFIG
#define _DONT_USE_1275_GENERIC_NAMES
#define _HAVE_CPUID_INSN
/*
* The feature test macro __i386 is generic for all processors implementing
* the Intel 386 instruction set or a superset of it. Specifically, this
* includes all members of the 386, 486, and Pentium family of processors.
*/
#elif defined(__i386) || defined(__i386__)
#if !defined(__i386)
#define __i386
#endif
#if !defined(__x86)
#define __x86
#endif
/*
* Define the appropriate "processor characteristics"
*/
#define _LITTLE_ENDIAN
#define _STACK_GROWS_DOWNWARD
#define _LONG_LONG_LTOH
#define _BIT_FIELDS_LTOH
#define _IEEE_754
#define _CHAR_IS_SIGNED
#define _BOOL_ALIGNMENT 1
#define _CHAR_ALIGNMENT 1
#define _SHORT_ALIGNMENT 2
#define _INT_ALIGNMENT 4
#define _FLOAT_ALIGNMENT 4
#define _FLOAT_COMPLEX_ALIGNMENT 4
#define _LONG_ALIGNMENT 4
#define _LONG_LONG_ALIGNMENT 4
#define _DOUBLE_ALIGNMENT 4
#define _DOUBLE_COMPLEX_ALIGNMENT 4
#define _LONG_DOUBLE_ALIGNMENT 4
#define _LONG_DOUBLE_COMPLEX_ALIGNMENT 4
#define _POINTER_ALIGNMENT 4
#define _MAX_ALIGNMENT 4
#define _ALIGNMENT_REQUIRED 0
#define _LONG_LONG_ALIGNMENT_32 _LONG_LONG_ALIGNMENT
/*
* Define the appropriate "implementation choices".
*/
#define _ILP32
#if !defined(_I32LPx) && defined(_KERNEL)
#define _I32LPx
#endif
#define _SUNOS_VTOC_16
#define _DMA_USES_PHYSADDR
#define _FIRMWARE_NEEDS_FDISK
#define _PSM_MODULES
#define _RTC_CONFIG
#define _DONT_USE_1275_GENERIC_NAMES
#define _HAVE_CPUID_INSN
/*
* The following set of definitions characterize the Solaris on SPARC systems.
*
* The symbol __sparc indicates any of the SPARC family of processor
* architectures. This includes SPARC V7, SPARC V8 and SPARC V9.
*
* The symbol __sparcv8 indicates the 32-bit SPARC V8 architecture as defined
* by Version 8 of the SPARC Architecture Manual. (SPARC V7 is close enough
* to SPARC V8 for the former to be subsumed into the latter definition.)
*
* The symbol __sparcv9 indicates the 64-bit SPARC V9 architecture as defined
* by Version 9 of the SPARC Architecture Manual.
*
* The symbols __sparcv8 and __sparcv9 are mutually exclusive, and are only
* relevant when the symbol __sparc is defined.
*/
/*
* XXX Due to the existence of 5110166, "defined(__sparcv9)" needs to be added
* to support backwards builds. This workaround should be removed in s10_71.
*/
#elif defined(__sparc) || defined(__sparcv9) || defined(__sparc__)
#if !defined(__sparc)
#define __sparc
#endif
/*
* You can be 32-bit or 64-bit, but not both at the same time.
*/
#if defined(__sparcv8) && defined(__sparcv9)
#error "SPARC Versions 8 and 9 are mutually exclusive choices"
#endif
/*
* Existing compilers do not set __sparcv8. Years will transpire before
* the compilers can be depended on to set the feature test macro. In
* the interim, we'll set it here on the basis of historical behaviour;
* if you haven't asked for SPARC V9, then you must've meant SPARC V8.
*/
#if !defined(__sparcv9) && !defined(__sparcv8)
#define __sparcv8
#endif
/*
* Define the appropriate "processor characteristics" shared between
* all Solaris on SPARC systems.
*/
#define _BIG_ENDIAN
#define _STACK_GROWS_DOWNWARD
#define _LONG_LONG_HTOL
#define _BIT_FIELDS_HTOL
#define _IEEE_754
#define _CHAR_IS_SIGNED
#define _BOOL_ALIGNMENT 1
#define _CHAR_ALIGNMENT 1
#define _SHORT_ALIGNMENT 2
#define _INT_ALIGNMENT 4
#define _FLOAT_ALIGNMENT 4
#define _FLOAT_COMPLEX_ALIGNMENT 4
#define _LONG_LONG_ALIGNMENT 8
#define _DOUBLE_ALIGNMENT 8
#define _DOUBLE_COMPLEX_ALIGNMENT 8
#define _ALIGNMENT_REQUIRED 1
/*
* Define the appropriate "implementation choices" shared between versions.
*/
#define _SUNOS_VTOC_8
#define _DMA_USES_VIRTADDR
#define _NO_FDISK_PRESENT
#define _HAVE_TEM_FIRMWARE
#define _OBP
/*
* The following set of definitions characterize the implementation of
* 32-bit Solaris on SPARC V8 systems.
*/
#if defined(__sparcv8)
/*
* Define the appropriate "processor characteristics"
*/
#define _LONG_ALIGNMENT 4
#define _LONG_DOUBLE_ALIGNMENT 8
#define _LONG_DOUBLE_COMPLEX_ALIGNMENT 8
#define _POINTER_ALIGNMENT 4
#define _MAX_ALIGNMENT 8
#define _LONG_LONG_ALIGNMENT_32 _LONG_LONG_ALIGNMENT
/*
* Define the appropriate "implementation choices"
*/
#define _ILP32
#if !defined(_I32LPx) && defined(_KERNEL)
#define _I32LPx
#endif
/*
* The following set of definitions characterize the implementation of
* 64-bit Solaris on SPARC V9 systems.
*/
#elif defined(__sparcv9)
/*
* Define the appropriate "processor characteristics"
*/
#define _LONG_ALIGNMENT 8
#define _LONG_DOUBLE_ALIGNMENT 16
#define _LONG_DOUBLE_COMPLEX_ALIGNMENT 16
#define _POINTER_ALIGNMENT 8
#define _MAX_ALIGNMENT 16
#define _LONG_LONG_ALIGNMENT_32 _LONG_LONG_ALIGMENT
/*
* Define the appropriate "implementation choices"
*/
#if !defined(_LP64)
#define _LP64
#endif
#if !defined(_I32LPx)
#define _I32LPx
#endif
#define _MULTI_DATAMODEL
#else
#error "unknown SPARC version"
#endif
/*
* #error is strictly ansi-C, but works as well as anything for K&R systems.
*/
#else
#error "ISA not supported"
#endif
#if defined(_ILP32) && defined(_LP64)
#error "Both _ILP32 and _LP64 are defined"
#endif
#ifdef __cplusplus
}
#endif
#endif /* _SYS_ISA_DEFS_H */

View File

@ -0,0 +1,62 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SOL_SYS_PARAM_H
#define _SOL_SYS_PARAM_H
#include_next <sys/param.h>
#include <unistd.h>
/*
* File system parameters and macros.
*
* The file system is made out of blocks of at most MAXBSIZE units,
* with smaller units (fragments) only in the last direct block.
* MAXBSIZE primarily determines the size of buffers in the buffer
* pool. It may be made larger without any effect on existing
* file systems; however making it smaller make make some file
* systems unmountable.
*
* Note that the blocked devices are assumed to have DEV_BSIZE
* "sectors" and that fragments must be some multiple of this size.
*/
#define MAXBSIZE 8192
#define DEV_BSIZE 512
#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
#define MAXNAMELEN 256
#define MAXOFFSET_T 0x7fffffffffffffffl
#define UID_NOBODY 60001 /* user ID no body */
#define GID_NOBODY UID_NOBODY
#define UID_NOACCESS 60002 /* user ID no access */
#define MAXUID 2147483647 /* max user id */
#define MAXPROJID MAXUID /* max project id */
#define PAGESIZE (sysconf(_SC_PAGESIZE))
#endif

View File

@ -0,0 +1,33 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SOL_STRINGS_H
#define _SOL_STRINGS_H
#include <string.h>
#include_next <strings.h>
#endif

View File

@ -0,0 +1,57 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SOL_SYS_TIME_H
#define _SOL_SYS_TIME_H
#include_next <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <time.h>
typedef longlong_t hrtime_t;
typedef struct timespec timestruc_t;
#ifndef NANOSEC
#define NANOSEC 1000000000
#endif
static inline hrtime_t gethrtime(void) {
struct timespec ts;
if(clock_gettime(CLOCK_MONOTONIC, &ts) != 0) {
fprintf(stderr, "Error: clock_gettime(CLOCK_MONOTONIC) failed\n");
fprintf(stderr, "Make sure you are are running kernel 2.6.x and have glibc 2.3.3 or newer installed\n");
fprintf(stderr, "Aborting...\n");
abort();
}
return (((u_int64_t)ts.tv_sec) * NANOSEC) + ts.tv_nsec;
}
#endif

View File

@ -0,0 +1,92 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _PORT_SYS_TYPES_H
#define _PORT_SYS_TYPES_H
#include <sys/isa_defs.h>
#include <sys/feature_tests.h>
#include_next <sys/types.h>
#include <sys/param.h> /* for NBBY */
#include <sys/types32.h>
#ifndef HAVE_INTTYPES
#include <inttypes.h>
typedef enum boolean { B_FALSE, B_TRUE } boolean_t;
typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
#endif /* HAVE_INTTYPES */
typedef longlong_t offset_t;
typedef u_longlong_t u_offset_t;
typedef u_longlong_t len_t;
typedef longlong_t diskaddr_t;
typedef short pri_t;
typedef int zoneid_t;
typedef int projid_t;
typedef int major_t;
typedef int minor_t;
typedef ushort_t o_mode_t; /* old file attribute type */
/*
* Definitions remaining from previous partial support for 64-bit file
* offsets. This partial support for devices greater than 2gb requires
* compiler support for long long.
*/
#ifdef _LONG_LONG_LTOH
typedef union {
offset_t _f; /* Full 64 bit offset value */
struct {
int32_t _l; /* lower 32 bits of offset value */
int32_t _u; /* upper 32 bits of offset value */
} _p;
} lloff_t;
#endif
#ifdef _LONG_LONG_HTOL
typedef union {
offset_t _f; /* Full 64 bit offset value */
struct {
int32_t _u; /* upper 32 bits of offset value */
int32_t _l; /* lower 32 bits of offset value */
} _p;
} lloff_t;
#endif
#include <sys/time.h>
#endif

View File

@ -0,0 +1,91 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_TYPES32_H
#define _SYS_TYPES32_H
#include <sys/inttypes.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* Interoperability types for programs. Used for:
*
* Crossing between 32-bit and 64-bit domains.
*
* On disk data formats such as filesystem meta data
* and disk label.
*
* Note: Applications should never include this
* header file.
*/
typedef uint32_t caddr32_t;
typedef int32_t daddr32_t;
typedef int32_t off32_t;
typedef uint32_t ino32_t;
typedef int32_t blkcnt32_t;
typedef uint32_t fsblkcnt32_t;
typedef uint32_t fsfilcnt32_t;
typedef int32_t id32_t;
typedef uint32_t major32_t;
typedef uint32_t minor32_t;
typedef int32_t key32_t;
typedef uint32_t mode32_t;
typedef uint32_t uid32_t;
typedef uint32_t gid32_t;
typedef uint32_t nlink32_t;
typedef uint32_t dev32_t;
typedef int32_t pid32_t;
typedef uint32_t size32_t;
typedef int32_t ssize32_t;
typedef int32_t time32_t;
typedef int32_t clock32_t;
struct timeval32 {
time32_t tv_sec; /* seconds */
int32_t tv_usec; /* and microseconds */
};
typedef struct timespec32 {
time32_t tv_sec; /* seconds */
int32_t tv_nsec; /* and nanoseconds */
} timespec32_t;
typedef struct timespec32 timestruc32_t;
typedef struct itimerspec32 {
struct timespec32 it_interval;
struct timespec32 it_value;
} itimerspec32_t;
#ifdef __cplusplus
}
#endif
#endif /* _SYS_TYPES32_H */

View File

@ -0,0 +1,36 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_VA_LIST_H
#define _SYS_VA_LIST_H
#include <stdarg.h>
#ifndef __va_list
typedef __gnuc_va_list __va_list;
#endif
#endif