Sync some headers with ltp project, missed on initial checkin
authorNathan Scott <nathans@sgi.com>
Mon, 7 Jul 2003 06:42:55 +0000 (06:42 +0000)
committerNathan Scott <nathans@sgi.com>
Mon, 7 Jul 2003 06:42:55 +0000 (06:42 +0000)
include/random_range.h [new file with mode: 0644]
include/string_to_tokens.h [new file with mode: 0644]
include/write_log.h [new file with mode: 0644]

diff --git a/include/random_range.h b/include/random_range.h
new file mode 100644 (file)
index 0000000..d3e1cce
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
+ * 
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * 
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like.  Any license provided herein, whether implied or
+ * otherwise, applies only to this software file.  Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ * 
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA  94043, or:
+ * 
+ * http://www.sgi.com 
+ * 
+ * For further information regarding this notice, see: 
+ * 
+ * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
+ */
+#ifndef _RANDOM_RANGE_H_
+#define _RANDOM_RANGE_H_
+
+int       parse_ranges     ( char *, int, int, int, int (*)(), char **, char ** );
+int       range_min        ( char *, int );
+int       range_max        ( char *, int );
+int       range_mult       ( char *, int );
+long      random_range     ( int, int, int, char ** );
+long      random_rangel    ( long, long, long, char ** );
+long long random_rangell   ( long long, long long, long long, char ** );
+void      random_range_seed( long );
+long      random_bit       ( long );
+
+#endif
diff --git a/include/string_to_tokens.h b/include/string_to_tokens.h
new file mode 100644 (file)
index 0000000..9c0935e
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
+ * 
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * 
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like.  Any license provided herein, whether implied or
+ * otherwise, applies only to this software file.  Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ * 
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA  94043, or:
+ * 
+ * http://www.sgi.com 
+ * 
+ * For further information regarding this notice, see: 
+ * 
+ * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
+ */
+#ifndef _STRING_TO_TOKENS_H_
+#define _STRING_TO_TOKENS_H_
+
+/*
+ * string_to_tokens() 
+ *
+ * This function parses the string 'arg_string', placing pointers to
+ * the 'separator' separated tokens into the elements of 'arg_array'.
+ * The array is terminated with a null pointer.
+ *
+ * NOTE: This function uses strtok() to parse 'arg_string', and thus
+ * physically alters 'arg_string' by placing null characters where the
+ * separators originally were.
+ */
+int string_to_tokens(char *, char **, int, char *);
+
+#endif
diff --git a/include/write_log.h b/include/write_log.h
new file mode 100644 (file)
index 0000000..c97ef58
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
+ * 
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * 
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like.  Any license provided herein, whether implied or
+ * otherwise, applies only to this software file.  Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ * 
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA  94043, or:
+ * 
+ * http://www.sgi.com 
+ * 
+ * For further information regarding this notice, see: 
+ * 
+ * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
+ */
+#ifndef _WRITE_LOG_H_
+#define _WRITE_LOG_H_
+
+/*
+ * Constants defining the max size of various wlog_rec fields.  ANY SIZE
+ * CHANGES HERE MUST BE REFLECTED IN THE WLOG_REC_DISK STRUCTURE DEFINED
+ * BELOW.
+ */
+
+#define WLOG_MAX_PATH          128
+#define WLOG_MAX_PATTERN       64
+#define WLOG_MAX_HOST           8
+#define WLOG_REC_MAX_SIZE      (sizeof(struct wlog_rec)+WLOG_MAX_PATH+WLOG_MAX_PATTERN+WLOG_MAX_HOST+2)
+
+/*
+ * User view of a write log record.  Note that this is not necessiliary
+ * how the data is formatted on disk (signifigant compression occurrs), so
+ * don't expect to od the write log file and see things formatted this way.
+ */
+
+struct wlog_rec {
+    int            w_pid;          /* pid doing the write          */
+    int            w_offset;       /* file offset                  */
+    int            w_nbytes;       /* # bytes written              */
+    int            w_oflags;       /* low-order open() flags       */
+    int            w_done;         /* 1 if io confirmed done       */
+    int            w_async;        /* 1 if async write (writea)    */
+
+    char    w_host[WLOG_MAX_HOST+1];           /* host doing write -   */
+                                               /* null terminated */
+    int            w_hostlen;                          /* host name length     */
+    char    w_path[WLOG_MAX_PATH+1];           /* file written to -    */
+                                               /* null terminated */
+    int            w_pathlen;                          /* file name length     */
+    char    w_pattern[WLOG_MAX_PATTERN+1];     /* pattern written -    */
+                                               /* null terminated */
+    int            w_patternlen;                       /* pattern length       */
+};
+
+#ifndef uint
+#define uint   unsigned int
+#endif
+
+/*
+ * On-disk structure of a wlog_rec.  Actually, the record consists of
+ * 3 parts:  [wlog_rec_disk structure][variable length data][length]
+ * where length is a 2 byte field containing the total record length
+ * (including the 2 bytes).  It is used for scanning the logfile in reverse
+ * order.
+ *
+ * The variable length data includes the path, host, and pattern (in that
+ * order).  The lengths of these pieces of data are held in the
+ * wlog_rec_disk structure.  Thus, the actual on-disk record looks like
+ * this (top is lower byte offset):
+ *
+ *             struct wlog_rec_disk
+ *             path    (w_pathlen bytes - not null terminated)
+ *             host    (w_hostlen bytes - not null terminated)
+ *             pattern (w_patternlen bytes - not null terminated)
+ *             2-byte record length
+ *
+ * Another way of looking at it is:
+ *
+ * <struct wlog_rec_disk><path (wpathlen bytes)>-->
+ * --><host (w_hostlen bytes)><pattern (w_patternlen bytes)><length (2 bytes)>
+ *
+ * The maximum length of this record is defined by the WLOG_REC_MAX_SIZE
+ * record.  Note that the 2-byte record length forces this to be
+ * <= 64k bytes.
+ *
+ * Note that there is lots of bit-masking done here.  The w_pathlen,
+ * w_hostlen, and w_patternlen fields MUST have enough bits to hold
+ * WLOG_MAX_PATH, WLOG_MAX_HOST, and WLOG_MAX_PATTERN bytes respectivly.
+ */
+
+struct wlog_rec_disk {
+#ifdef sgi     /* sgi is pissy about fields > 32 bit, even cc -mips3 */
+    uint    w_offset    : 32;      /* file offset                  */
+    uint    w_extra0    : 32;       /* EXTRA BITS IN WORD 0         */
+#endif
+#ifdef linux
+    uint    w_offset    : 32;      /* file offset                  */
+    uint    w_extra0    : 32;       /* EXTRA BITS IN WORD 0         */
+#endif
+#ifdef CRAY
+    uint    w_offset    : 44;      /* file offset                  */
+    uint    w_extra0    : 20;       /* EXTRA BITS IN WORD 0         */
+#endif
+
+    uint    w_nbytes    : 32;      /* # bytes written              */
+    uint    w_oflags   : 32;       /* low-order open() flags       */
+
+    uint    w_pid       : 17;      /* pid doing the write          */
+    uint    w_pathlen  :  7;       /* length of file path          */
+    uint    w_patternlen:  6;      /* length of pattern            */
+    uint    w_hostlen   :  4;       /* length of host               */
+    uint    w_done      :  1;      /* 1 if io confirmed done       */
+    uint    w_async     :  1;      /* 1 if async write (writea)    */
+    uint    w_extra2   : 28;       /* EXTRA BITS IN WORD 2         */
+};
+
+/*
+ * write log file datatype.  wlog_open() initializes this structure
+ * which is then passed around to the various wlog_xxx routines.
+ */
+
+struct wlog_file {
+    int                w_afd;                  /* append fd                    */
+    int                w_rfd;                  /* random-access fd             */
+    char       w_file[1024];           /* name of the write_log        */
+};
+
+/*
+ * return value defines for the user-supplied function to
+ * wlog_scan_backward().
+ */
+
+#define WLOG_STOP_SCAN         0
+#define WLOG_CONTINUE_SCAN     1
+
+/*
+ * wlog prototypes
+ */
+
+#if __STDC__
+extern int     wlog_open(struct wlog_file *wfile, int trunc, int mode);
+extern int     wlog_close(struct wlog_file *wfile);
+extern int     wlog_record_write(struct wlog_file *wfile,
+                                 struct wlog_rec *wrec, long offset);
+extern int     wlog_scan_backward(struct wlog_file *wfile, int nrecs,
+                                  int (*func)(struct wlog_rec *rec),
+                                  long data);
+#else
+int    wlog_open();
+int    wlog_close();
+int    wlog_record_write();
+int    wlog_scan_backward();
+#endif
+
+extern char    Wlog_Error_String[];
+
+#endif /* _WRITE_LOG_H_ */
+