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

📄 dmapi.h

📁 linux得一些常用命令,以及linux环境下的c编程
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 1995-2001 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.1 of the GNU Lesser 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 Lesser 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/SGIGPLNoticeExplan/ */#ifndef _SYS_DMAPI_H#define _SYS_DMAPI_H#ifdef	__cplusplusextern	"C" {#endif#ifndef __KERNEL__#include <sys/types.h>#endif#include <linux/types.h>/************************************************************************** *									  * * The SGI implementation of DMAPI is based upon the X/Open document	  * * 	Systems Management: Data Storage Managment (XDSM) API		  * * dated February 1997.  Not all DMAPI functions and structure fields	  * * have been implemented.  Most importantly, the DMAPI functions	  * * dm_request_right, dm_release_right, dm_query_right, dm_upgrade_right	  * * and dm_downgrade_right do not work as described in the specification.  * * 									  * * The XFS filesystem currently does not allow its locking mechanisms to  * * be externally accessed from user space.  While the above-mentioned	  * * dm_xxx_right functions exist and can be called by applications, they	  * * always return successfully without actually obtaining any locks	  * * within the filesystem.						  * * 									  * * Applications which do not need full rights support and which only	  * * make dm_xxx_right calls in order to satisfy the input requirements of  * * other DMAPI calls should be able to use these routines to avoid	  * * having to implement special-case code for SGI platforms.  Applications * * which truely need the capabilities of a full implementation of rights  * * will unfortunately have to come up with alternate software solutions	  * * until such time as rights can be completely implemented.		  * * 									  * * Functions and structure fields defined within this file which are not  * * supported in the SGI implementation of DMAPI are indicated by comments * * following their definitions such as "not supported", or "not		  * * completely supported".  Any function or field not so marked may be	  * * assumed to work exactly according to the spec.			  * *									  * **************************************************************************//* The first portion of this file contains defines and typedefs that are   DMAPI implementation-dependent, and could be different on other platforms.*/typedef __s64		dm_attrloc_t;typedef	unsigned int	dm_boolean_t;typedef	__u64		dm_eventset_t;typedef	__u64		dm_fsid_t;typedef	__u64		dm_ino_t;typedef __u32		dm_igen_t;typedef __s64		dm_off_t;typedef	unsigned int	dm_sequence_t;typedef int		dm_sessid_t;typedef __u64		dm_size_t;typedef __s64		dm_ssize_t;typedef int		dm_token_t;/* XXX dev_t, mode_t, and nlink_t are not the same size in kernel space   and user space.  This affects the field offsets for dm_stat_t.   The following solution is temporary.   user space sizes:  dev_t=8  mode_t=4  nlink_t=4   kernel space    :  dev_t=2  mode_t=2  nlink_t=2*/typedef __s64		dm_dev_t;typedef int		dm_mode_t;typedef int		dm_nlink_t;#define	DM_REGION_NOEVENT	0x0#define	DM_REGION_READ		0x1#define DM_REGION_WRITE		0x2#define	DM_REGION_TRUNCATE	0x4/* Values for the mask argument used with dm_get_fileattr, dm_get_bulkattr,   dm_get_dirattrs, and dm_set_fileattr.*/#define	DM_AT_MODE	0x0001#define	DM_AT_UID	0x0002#define	DM_AT_GID	0x0004#define	DM_AT_ATIME	0x0008#define	DM_AT_MTIME	0x0010#define	DM_AT_CTIME	0x0020#define	DM_AT_SIZE	0x0040#define	DM_AT_DTIME	0x0080#define	DM_AT_HANDLE	0x0100#define	DM_AT_EMASK	0x0200#define	DM_AT_PMANR	0x0400#define	DM_AT_PATTR	0x0800#define	DM_AT_STAT	0x1000#define	DM_AT_CFLAG	0x2000#define	DM_EV_WAIT	0x1		/* used in dm_get_events() */#define	DM_MOUNT_RDONLY	0x1		/* me_mode field in dm_mount_event_t */#define	DM_RR_WAIT	0x1#define	DM_UNMOUNT_FORCE 0x1		/* ne_mode field in dm_namesp_event_t */#define	DM_WRITE_SYNC	0x1		/* used in dm_write_invis() */#define DM_SESSION_INFO_LEN	256#define	DM_NO_SESSION		0#define DM_TRUE			1#define DM_FALSE		0#define	DM_INVALID_TOKEN	0#define	DM_NO_TOKEN		(-1)#define	DM_INVALID_HANP		NULL#define	DM_INVALID_HLEN		0#define	DM_GLOBAL_HANP		((void *)(1LL))#define	DM_GLOBAL_HLEN		((size_t)(1))#define	DM_VER_STR_CONTENTS	"SGI DMAPI (XDSM) API, Release 1.0."#define	DMEV_SET(event_type, event_list) \	((event_list) |= (1 << (event_type)))#define	DMEV_CLR(event_type, event_list) \	((event_list) &= ~(1 << (event_type)))#define	DMEV_ISSET(event_type, event_list) \	(int)(((event_list) & (1 << (event_type))) != 0)#define	DMEV_ZERO(event_list) \	(event_list) = 0typedef	struct {	int	vd_offset;	/* offset from start of containing struct */	unsigned int	vd_length;	/* length of data starting at vd_offset */} dm_vardata_t;#define DM_GET_VALUE(p, field, type) \	((type) ((char *)(p) + (p)->field.vd_offset))#define DM_GET_LEN(p, field) \	((p)->field.vd_length)#define DM_STEP_TO_NEXT(p, type) \	((type) ((p)->_link ? (char *)(p) + (p)->_link : NULL))/* The remainder of this include file contains defines, typedefs, and   structures which are strictly defined by the DMAPI 2.3 specification.   (The _link field which appears in several structures is an   implementation-specific way to implement DM_STEP_TO_NEXT, and   should not be referenced directly by application code.)*/#define	DM_ATTR_NAME_SIZE	8struct dm_attrname {	unsigned char	an_chars[DM_ATTR_NAME_SIZE];};typedef	struct dm_attrname	dm_attrname_t;struct dm_attrlist {	int		_link;	dm_attrname_t	al_name;	dm_vardata_t	al_data;};typedef struct dm_attrlist	dm_attrlist_t;typedef enum {	DM_CONFIG_INVALID,	DM_CONFIG_BULKALL,	DM_CONFIG_CREATE_BY_HANDLE,	DM_CONFIG_DTIME_OVERLOAD,	DM_CONFIG_LEGACY,	DM_CONFIG_LOCK_UPGRADE,	DM_CONFIG_MAX_ATTR_ON_DESTROY,	DM_CONFIG_MAX_ATTRIBUTE_SIZE,	DM_CONFIG_MAX_HANDLE_SIZE,	DM_CONFIG_MAX_MANAGED_REGIONS,	DM_CONFIG_MAX_MESSAGE_DATA,	DM_CONFIG_OBJ_REF,	DM_CONFIG_PENDING,	DM_CONFIG_PERS_ATTRIBUTES,	DM_CONFIG_PERS_EVENTS,	DM_CONFIG_PERS_INHERIT_ATTRIBS,	DM_CONFIG_PERS_MANAGED_REGIONS,	DM_CONFIG_PUNCH_HOLE,	DM_CONFIG_TOTAL_ATTRIBUTE_SPACE,	DM_CONFIG_WILL_RETRY} dm_config_t;struct	dm_dioinfo {			/* non-standard SGI addition */	unsigned int	d_mem;	unsigned int	d_miniosz;	unsigned int	d_maxiosz;	dm_boolean_t	d_dio_only;};typedef	struct dm_dioinfo	dm_dioinfo_t;struct dm_dispinfo {	int		_link;	unsigned int	di_pad1;		/* reserved; do not reference */	dm_vardata_t	di_fshandle;	dm_eventset_t	di_eventset;};typedef	struct dm_dispinfo	dm_dispinfo_t;typedef enum {	DM_EVENT_INVALID	= -1,	DM_EVENT_CANCEL		= 0,		/* not supported */	DM_EVENT_MOUNT		= 1,	DM_EVENT_PREUNMOUNT	= 2,	DM_EVENT_UNMOUNT	= 3,	DM_EVENT_DEBUT		= 4,		/* not supported */	DM_EVENT_CREATE		= 5,	DM_EVENT_CLOSE		= 6,		/* not supported */	DM_EVENT_POSTCREATE	= 7,	DM_EVENT_REMOVE		= 8,	DM_EVENT_POSTREMOVE	= 9,	DM_EVENT_RENAME		= 10,	DM_EVENT_POSTRENAME	= 11,	DM_EVENT_LINK		= 12,	DM_EVENT_POSTLINK	= 13,	DM_EVENT_SYMLINK	= 14,	DM_EVENT_POSTSYMLINK	= 15,	DM_EVENT_READ		= 16,	DM_EVENT_WRITE		= 17,	DM_EVENT_TRUNCATE	= 18,	DM_EVENT_ATTRIBUTE	= 19,	DM_EVENT_DESTROY	= 20,	DM_EVENT_NOSPACE	= 21,	DM_EVENT_USER		= 22,	DM_EVENT_MAX		= 23} dm_eventtype_t;struct dm_eventmsg {	int		_link;	dm_eventtype_t	ev_type;	dm_token_t	ev_token;	dm_sequence_t	ev_sequence;	dm_vardata_t	ev_data;};typedef	struct dm_eventmsg	dm_eventmsg_t;struct dm_cancel_event {			/* not supported */	dm_sequence_t	ce_sequence;	dm_token_t	ce_token;};typedef	struct dm_cancel_event	dm_cancel_event_t;struct dm_data_event {	dm_vardata_t	de_handle;	dm_off_t	de_offset;	dm_size_t	de_length;};typedef struct dm_data_event dm_data_event_t;struct dm_destroy_event {	dm_vardata_t		ds_handle;	dm_attrname_t		ds_attrname;	dm_vardata_t		ds_attrcopy;};typedef	struct dm_destroy_event dm_destroy_event_t;struct dm_mount_event {	mode_t		me_mode;	dm_vardata_t	me_handle1;	dm_vardata_t	me_handle2;	dm_vardata_t	me_name1;	dm_vardata_t	me_name2;	dm_vardata_t	me_roothandle;};typedef	struct dm_mount_event dm_mount_event_t;struct dm_namesp_event {	mode_t		ne_mode;	dm_vardata_t	ne_handle1;	dm_vardata_t	ne_handle2;	dm_vardata_t	ne_name1;	dm_vardata_t	ne_name2;	int		ne_retcode;};typedef	struct dm_namesp_event dm_namesp_event_t;typedef enum {	DM_EXTENT_INVALID,	DM_EXTENT_RES,	DM_EXTENT_HOLE} dm_extenttype_t;struct dm_extent {	dm_extenttype_t	ex_type;	unsigned int	ex_pad1;		/* reserved; do not reference */	dm_off_t	ex_offset;	dm_size_t	ex_length;};typedef struct dm_extent dm_extent_t;struct dm_fileattr {	mode_t		fa_mode;	uid_t		fa_uid;	gid_t		fa_gid;	time_t		fa_atime;	time_t		fa_mtime;	time_t		fa_ctime;	time_t		fa_dtime;	unsigned int	fa_pad1;		/* reserved; do not reference */	dm_off_t	fa_size;};typedef struct dm_fileattr dm_fileattr_t;struct dm_inherit {				/* not supported */	dm_attrname_t	ih_name;	mode_t		ih_filetype;};typedef struct dm_inherit dm_inherit_t;typedef enum {	DM_MSGTYPE_INVALID,	DM_MSGTYPE_SYNC,	DM_MSGTYPE_ASYNC} dm_msgtype_t;struct dm_region {	dm_off_t	rg_offset;	dm_size_t	rg_size;	unsigned int	rg_flags;	unsigned int	rg_pad1;		/* reserved; do not reference */};typedef struct dm_region dm_region_t;typedef enum {	DM_RESP_INVALID,	DM_RESP_CONTINUE,	DM_RESP_ABORT,	DM_RESP_DONTCARE} dm_response_t;typedef enum {	DM_RIGHT_NULL,	DM_RIGHT_SHARED,	DM_RIGHT_EXCL} dm_right_t;struct dm_stat {	int		_link;	dm_vardata_t	dt_handle;	dm_vardata_t	dt_compname;	int		dt_nevents;	dm_eventset_t	dt_emask;	int		dt_pers;		/* field not supported */	int		dt_pmanreg;	time_t		dt_dtime;	unsigned int	dt_change;		/* field not supported */	unsigned int	dt_pad1;		/* reserved; do not reference */	dm_dev_t	dt_dev;	dm_ino_t	dt_ino;	dm_mode_t	dt_mode;	dm_nlink_t	dt_nlink;	uid_t		dt_uid;	gid_t		dt_gid;	dm_dev_t	dt_rdev;	unsigned int	dt_pad2;		/* reserved; do not reference */	dm_off_t	dt_size;	time_t		dt_atime;	time_t		dt_mtime;	time_t		dt_ctime;	unsigned int	dt_blksize;	dm_size_t	dt_blocks;	/* Non-standard filesystem-specific fields.  Currently XFS is the only	   supported filesystem type.	*/	__u64	dt_pad3;	/* reserved; do not reference */	int		dt_fstype;	/* filesystem index; see sysfs(2) */	union	{		struct	{			dm_igen_t	igen;			unsigned int	xflags;			unsigned int	extsize;			unsigned int	extents;			unsigned short	aextents;			unsigned short	dmstate;		} sgi_xfs;	} fsys_dep;};typedef	struct dm_stat	dm_stat_t;#define	dt_xfs_igen	fsys_dep.sgi_xfs.igen#define	dt_xfs_xflags	fsys_dep.sgi_xfs.xflags#define	dt_xfs_extsize	fsys_dep.sgi_xfs.extsize#define	dt_xfs_extents	fsys_dep.sgi_xfs.extents#define	dt_xfs_aextents	fsys_dep.sgi_xfs.aextents#define	dt_xfs_dmstate	fsys_dep.sgi_xfs.dmstate/* Flags for the non-standard dt_xfs_xflags field. */#define	DM_XFLAG_REALTIME	0x1#define	DM_XFLAG_PREALLOC	0x2#define	DM_XFLAG_HASATTR	0x80000000struct	dm_timestruct {	time_t		dm_tv_sec;	int		dm_tv_nsec;};typedef	struct dm_timestruct dm_timestruct_t;struct	dm_xstat {				/* not supported */	dm_stat_t	dx_statinfo;	dm_vardata_t	dx_attrdata;};typedef	struct dm_xstat	dm_xstat_t;/* The following list provides the prototypes for all functions defined in   the DMAPI interface.*/extern intdm_clear_inherit(				/* not supported */	dm_sessid_t	sid,	void		*hanp,	size_t		hlen,	dm_token_t	token,	dm_attrname_t	*attrnamep);extern intdm_create_by_handle(				/* not supported */	dm_sessid_t	sid,	void		*dirhanp,	size_t		dirhlen,	dm_token_t	token,	void		*hanp,	size_t		hlen,	char		*cname);extern intdm_create_session(	dm_sessid_t	oldsid,	char		*sessinfop,	dm_sessid_t	*newsidp);extern intdm_create_userevent(	dm_sessid_t	sid,	size_t		msglen,	void		*msgdatap,	dm_token_t	*tokenp);extern intdm_destroy_session(	dm_sessid_t	sid);extern intdm_downgrade_right(		/* not completely supported; see caveat above */	dm_sessid_t	sid,	void		*hanp,	size_t		hlen,	dm_token_t	token);extern int

⌨️ 快捷键说明

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