⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 write_log.h

📁 cygwin, 著名的在win32下模拟unix操作系统的东东
💻 H
字号:
/* * 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 CRAY    uint    w_offset    : 44;	    /* file offset  	    	    */    uint    w_extra0    : 20;       /* EXTRA BITS IN WORD 0         */#else    uint    w_offset    : 32;	    /* file offset  	    	    */    uint    w_extra0    : 32;       /* 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);#elseint	wlog_open();int	wlog_close();int	wlog_record_write();int	wlog_scan_backward();#endifextern char	Wlog_Error_String[];#endif /* _WRITE_LOG_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -