usr/src/cmd/samba/Solaris/sam-types.h
changeset 42 b6f829cb6d9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/cmd/samba/Solaris/sam-types.h	Sat Aug 21 11:47:07 2010 -0700
@@ -0,0 +1,276 @@
+/*
+ *	sam/types.h - SAM-FS types.
+ *
+ *  Description:
+ *      Defines SAM-FS types and lots of other things.
+ *
+ */
+
+/*
+ *    SAM-QFS_notice_begin
+ *
+ *      Solaris 2.x Sun Storage & Archiving Management File System
+ *
+ *		Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ *		U.S. Government Rights - Commercial software. Government users are
+ *	subject to the Sun Microsystems, Inc. standard license agreement and applicable
+ *	provisions of the FAR and its supplements.
+ *
+ *      	Use is subject to license terms. Sun, Sun Microsystems and the Sun logo
+ *	are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S.
+ *	and other countries.
+ *
+ *    SAM-QFS_notice_end
+ */
+
+/*
+ *	LGPL NOTICE
+ *
+ *	This library is free software; you can redistribute it and/or
+ *	modify it under the terms of the GNU Lesser General Public
+ *	License as published by the Free Software Foundation; either
+ *	version 2.1 of the License, or (at your option) any later version.
+ *
+ *	This library is distributed in the hope that it will be useful,
+ *	but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *	Lesser General Public License for more details.
+ *
+ *	You should have received a copy of the GNU Lesser General Public
+ *	License along with this library; if not, write to the Free Software
+ *	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef	_SAM_TYPES_H
+#define	_SAM_TYPES_H
+
+#ifdef sun
+#pragma ident "$Revision$"
+#endif
+
+#ifdef linux
+
+#ifndef __KERNEL__
+#include <sys/types.h>
+#include <netdb.h>
+#endif /* __KERNEL__ */
+
+#else /* linux */
+
+#include <sys/types.h>
+#include <netdb.h>
+
+#endif /* linux */
+
+#include "sam-sys_types.h"
+
+/*
+ * These typedefs are part of an emerging ANSI-C standard for fixed-size
+ * integer types.
+ * They are available in Solaris 2.6 (and above) in /usr/include/sys/types.h.
+ */
+
+#if defined _SYS_INT_TYPES_H
+/*
+ * (uint8_t, uint32_t and uint64_t are defined in Solaris 2.5
+ * /usr/include/sys/synch.h.
+ */
+#define	_UINT8_T
+#define	_UINT16_T
+#define	_INT32_T
+#define	_UINT32_T
+#define	_INT64_T
+#define	_UINT64_T
+#endif  /* defined _SYS_INTTYPES_H */
+
+#if !defined _UINT8_T
+#define	_UINT8_T
+typedef unsigned char uint8_t;
+#endif  /* !defined _UINT8_T */
+#if !defined _UINT16_T
+#define	_UINT16_T
+typedef unsigned short uint16_t;
+#endif  /* !defined uint16_t */
+#if !defined _INT32_T
+#define	_INT32_T
+typedef int int32_t;
+#endif  /* !defined _INT32_T */
+#if !defined _UINT32_T
+#define	_UINT32_T
+typedef unsigned int uint32_t;
+#endif  /* !defined _UINT32_T */
+#if !defined _INT64_T
+#define	_INT64_T
+typedef long long int64_t;
+#endif  /* !defined _INT64_T */
+#if !defined _UINT64_T
+#define	_UINT64_T
+typedef unsigned long long uint64_t;
+#endif  /* !defined _UINT64_T */
+
+#if !defined(FALSE)
+#define	FALSE   (0)
+#endif
+#if !defined(TRUE)
+#define	TRUE	(1)
+#endif
+
+/* The following is for the lawyers */
+#define	COPYRIGHT "Copyright (c) 2001 Sun Microsystems, Inc. All Rights Reserved. SUN PROPRIETARY/CONFIDENTIAL."
+
+#define	RESELL_LIB "libresel.so"
+
+/*
+ *  Set errno for MT and non-MT callers.
+ *  errno is defined differently for MT and non-MT compiled modules.
+ *  This macro may be used to properly return errno for both types
+ *  of modules linked to non-MT compiled library modules.
+ *  The underlying Solaris errno function is ___errno().
+ */
+extern int *___errno(void);
+#define	SetErrno (*(___errno()))
+
+/*
+ *  Return the difference between two pointers.
+ *  lint produces warning: possible ptrdiff_t overflow when two pointers
+ *  are subtracted.
+ *  Returns 0 if the difference is negative.
+ *  The 'lint' version obviously will not do the work.
+ */
+#if !defined(lint)
+#define	Ptrdiff(a, b) ((((char *)(a) - (char *)(b)) > 0) ? \
+		((char *)(a) - (char *)(b)) : 0)
+#else /* !defined(lint) */
+#define	Ptrdiff(a, b) (memcmp((a), (b), 1))
+#endif /* !defined(lint) */
+
+/*
+ *  Round value to be structure aligned.
+ *  Structures may have a size that is not a multiple of 64-bits.
+ *  When these structures are packed in a file that will be memory
+ *  mapped, the size must be rounded to a 64-bit multiple for SPARC
+ *  and a 32-bit multiple for AMD.
+ */
+#if defined(__sparc)
+#define	STRUCT_RND(v) ((((v)+sizeof (longlong_t)-1) \
+	/ sizeof (longlong_t)) * sizeof (longlong_t))
+#elif defined(__i386) || defined(__amd64) || defined(x86_64) || defined(ia64)
+#define	STRUCT_RND(v) ((((v)+sizeof (int32_t)-1) \
+	/ sizeof (int32_t)) * sizeof (int32_t))
+#else
+	** ERROR **  unknown architecture
+#endif
+
+/*
+ *  All filesystem OTW structures must be 64-bit aligned,
+ *  regardless of the architecture for the server and clients.
+ */
+#define	STRUCT_RND64(v) ((((v)+sizeof (longlong_t)-1) \
+	/ sizeof (longlong_t)) * sizeof (longlong_t))
+
+#if defined(O_LARGEFILE)		/* Needed on open for large files */
+#define	SAM_O_LARGEFILE O_LARGEFILE
+#else
+#define	SAM_O_LARGEFILE 0
+#endif
+
+#define	SAM_FSTYPE 	"samfs"		/* st_fstype string for SAM-FS */
+
+#define	ROBOT_NO_SLOT 	0xffffffff	/* used to flag no slot. */
+
+/*
+ * When the space left on a tape (in units of 1024) falls below this,
+ * the tape will be considered full.
+ */
+#define	TAPE_IS_FULL 100
+
+/*
+ * HASAM running file
+ */
+
+#define	HASAM_TMP_DIR   "/var/run"
+#define	HASAM_RUN_FILE  HASAM_TMP_DIR"/hasam_running"
+
+#define	BARCODE_LEN 	36		/* length of barcode w/o null by */
+
+typedef	int		ATOM_INT_T;	/* Int with atomic memory reference */
+
+typedef uint64_t 	fsize_t;	/* Size of a file in bytes */
+typedef int64_t 	sfsize_t;
+#define	FSIZE_MAX 	0x7fffffffffffffff
+
+typedef char uname_t[32];		/* Device name */
+typedef char upath_t[128];		/* Path name */
+
+typedef char mtype_t[5];		/* Media type */
+typedef char vsn_t[32];			/* ANSI Volume serial name, 31 chars */
+					/* null terminated */
+					/* Tape VSNs are 6 chars or less */
+
+typedef char host_t[MAXHOSTNAMELEN];	/* Host name */
+
+typedef uint16_t media_t;		/* Media type */
+typedef uint16_t dtype_t;		/* Device type */
+typedef uint16_t equ_t;			/* Equipment ordinal */
+#define	EQU_MAX 65534			/* Maximum value for equipment ordinal */
+					/* (need one reserved for historian) */
+
+/*
+ * Common memory mapped file prefix.
+ * If the MfValid field becomes zero, the file should be renewed.
+ * MapFileDetach() then MapFileAttach().
+ */
+typedef struct MappedFile {
+	uint32_t MfMagic;		/* Magic number of file */
+	uint32_t MfLen;			/* Length of file mapped */
+	uint32_t MfValid;		/* File valid if non-zero */
+} MappedFile_t;
+
+typedef uint32_t sam_ino_t;
+
+typedef struct sam_id {			/* Inode identification */
+	sam_ino_t ino;			/* I-number */
+	int32_t gen;			/* Generation number */
+} sam_id_t;
+
+typedef struct csum {			/* Data verification value */
+	uint32_t csum_val[4];
+} csum_t;
+
+typedef int32_t sam_time_t;		/* 32-bit time */
+
+typedef struct sam_timestruc {
+	int32_t	tv_sec;
+	int32_t	tv_nsec;
+} sam_timestruc_t;
+
+typedef struct sam_flagtext {
+	uint64_t flagmask;
+	char	*flagtext;
+} sam_flagtext_t;
+
+#define	SAM_POINTER(t) union { t *ptr; uint32_t p32; uint64_t p64; }
+
+
+/*
+ * the following used in the SC_fsreleaser system call
+ */
+#define	RELEASER_STARTED	1
+#define	RELEASER_FINISHED	0
+
+#define	DF_THR_STK		(0)
+#define	SM_THR_STK		DF_THR_STK
+#define	MD_THR_STK		DF_THR_STK
+#define	LG_THR_STK		DF_THR_STK
+#define	HG_THR_STK		DF_THR_STK
+
+/*
+ * Rounding directions
+ */
+typedef enum sam_round {
+	SAM_ROUND_DOWN = 0,
+	SAM_ROUND_UP = 1
+} sam_round_t;
+
+#endif  /* _SAM_TYPES_H */