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

📄 dmapi_kern.h

📁 linux得一些常用命令,以及linux环境下的c编程
💻 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/SGIGPLNoticeExplan/ */#ifndef __DMAPI_KERN_H__#define __DMAPI_KERN_H__struct sys_dmapi_args {	long arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11;};typedef struct sys_dmapi_args sys_dmapi_args_t;#ifdef __KERNEL__struct xfs_handle_t;/* The first group of definitions and prototypes define the filesystem's   interface into the DMAPI code.*//* Definitions used for the flags field on dm_send_data_event(),   dm_send_unmount_event(), and dm_send_namesp_event() calls.*/#define	DM_FLAGS_NDELAY		0x001	/* return EAGAIN after dm_pending() */#define	DM_FLAGS_UNWANTED	0x002	/* event not in fsys dm_eventset_t *//* Possible code levels reported by dm_code_level(). */#define	DM_CLVL_INIT	0	/* DMAPI prior to X/Open compliance */#define	DM_CLVL_XOPEN	1	/* X/Open compliant DMAPI *//* Prototypes used outside of the DMI module/directory. */int		dm_send_data_event(			dm_eventtype_t	event,			struct bhv_desc	*bdp,			dm_right_t	vp_right,			off_t		off,			size_t		len,			int		flags);int		dm_send_destroy_event(			struct bhv_desc	*bdp,			dm_right_t	vp_right);int		dm_send_mount_event(			struct vfs	*vfsp,			dm_right_t	vfsp_right,			struct bhv_desc *bdp,			dm_right_t	vp_right,			struct bhv_desc *rootbdp,			dm_right_t	rootvp_right,			char		*name1,			char		*name2);int		dm_send_namesp_event(			dm_eventtype_t	event,			struct bhv_desc	*bdp1,			dm_right_t	vp1_right,			struct bhv_desc	*bdp2,			dm_right_t	vp2_right,			char		*name1,			char		*name2,			mode_t		mode,			int		retcode,			int		flags);void		dm_send_unmount_event(			struct vfs	*vfsp,			struct vnode	*vp,			dm_right_t	vfsp_right,			mode_t		mode,			int		retcode,			int		flags);int		dm_code_level(void);int		dm_vp_to_handle (			struct vnode	*vp,			xfs_handle_t	*handlep);/* The following prototypes and definitions are used by DMAPI as its   interface into the filesystem code.  Communication between DMAPI and the   filesystem are established as follows:   1. DMAPI uses the VFS_DMAPI_FSYS_VECTOR to ask for the addresses      of all the functions within the filesystem that it may need to call.   2. The filesystem returns an array of function name/address pairs which      DMAPI builds into a function vector.   The VFS_DMAPI_FSYS_VECTOR call is only made one time for a particular   filesystem type.  From then on, DMAPI uses its function vector to call the   filesystem functions directly.  Functions in the array which DMAPI doesn't   recognize are ignored.  A dummy function which returns ENOSYS is used for   any function that DMAPI needs but which was not provided by the filesystem.   If XFS doesn't recognize the VFS_DMAPI_FSYS_VECTOR, DMAPI assumes that it   doesn't have the X/Open support code; in this case DMAPI uses the XFS-code   originally bundled within DMAPI.   The goal of this interface is allow incremental changes to be made to   both the filesystem and to DMAPI while minimizing inter-patch dependencies,   and to eventually allow DMAPI to support multiple filesystem types at the   same time should that become necessary.*/typedef enum {	DM_FSYS_CLEAR_INHERIT		=  0,	DM_FSYS_CREATE_BY_HANDLE	=  1,	DM_FSYS_DOWNGRADE_RIGHT		=  2,	DM_FSYS_GET_ALLOCINFO_RVP	=  3,	DM_FSYS_GET_BULKALL_RVP		=  4,	DM_FSYS_GET_BULKATTR_RVP	=  5,	DM_FSYS_GET_CONFIG		=  6,	DM_FSYS_GET_CONFIG_EVENTS	=  7,	DM_FSYS_GET_DESTROY_DMATTR	=  8,	DM_FSYS_GET_DIOINFO		=  9,	DM_FSYS_GET_DIRATTRS_RVP	= 10,	DM_FSYS_GET_DMATTR		= 11,	DM_FSYS_GET_EVENTLIST		= 12,	DM_FSYS_GET_FILEATTR		= 13,	DM_FSYS_GET_REGION		= 14,	DM_FSYS_GETALL_DMATTR		= 15,	DM_FSYS_GETALL_INHERIT		= 16,	DM_FSYS_INIT_ATTRLOC		= 17,	DM_FSYS_MKDIR_BY_HANDLE		= 18,	DM_FSYS_PROBE_HOLE		= 19,	DM_FSYS_PUNCH_HOLE		= 20,	DM_FSYS_READ_INVIS_RVP		= 21,	DM_FSYS_RELEASE_RIGHT		= 22,	DM_FSYS_REMOVE_DMATTR		= 23,	DM_FSYS_REQUEST_RIGHT		= 24,	DM_FSYS_SET_DMATTR		= 25,	DM_FSYS_SET_EVENTLIST		= 26,	DM_FSYS_SET_FILEATTR		= 27,	DM_FSYS_SET_INHERIT		= 28,	DM_FSYS_SET_REGION		= 29,	DM_FSYS_SYMLINK_BY_HANDLE	= 30,	DM_FSYS_SYNC_BY_HANDLE		= 31,	DM_FSYS_UPGRADE_RIGHT		= 32,	DM_FSYS_WRITE_INVIS_RVP		= 33,	DM_FSYS_MAX			= 34} dm_fsys_switch_t;#define	DM_FSYS_OBJ	0x1		/* object refers to a fsys handle *//* *  Prototypes for filesystem-specific functions. */typedef	int	(*dm_fsys_clear_inherit_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_attrname_t	*attrnamep);typedef	int	(*dm_fsys_create_by_handle_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			void		*hanp,			size_t		hlen,			char		*cname);typedef	int	(*dm_fsys_downgrade_right_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		type);		/* DM_FSYS_OBJ or zero */typedef	int	(*dm_fsys_get_allocinfo_rvp_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_off_t	*offp,			u_int		nelem,			dm_extent_t	*extentp,			u_int		*nelemp,			int		*rvalp);typedef	int 	(*dm_fsys_get_bulkall_rvp_t)(			bhv_desc_t	*bdp,		/* root vnode */			dm_right_t	right,			u_int		mask,			dm_attrname_t	*attrnamep,			dm_attrloc_t	*locp,			size_t		buflen,			void		*bufp,			size_t		*rlenp,			int		*rvalp);typedef	int 	(*dm_fsys_get_bulkattr_rvp_t)(			bhv_desc_t	*bdp,		/* root vnode */			dm_right_t	right,			u_int		mask,			dm_attrloc_t	*locp,			size_t		buflen,			void		*bufp,			size_t		*rlenp,			int		*rvalp);typedef	int	(*dm_fsys_get_config_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_config_t	flagname,			dm_size_t	*retvalp);typedef	int	(*dm_fsys_get_config_events_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		nelem,			dm_eventset_t	*eventsetp,			u_int		*nelemp);typedef	int	(*dm_fsys_get_destroy_dmattr_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_attrname_t	*attrnamep,			char		**valuepp,			int		*vlenp);typedef	int	(*dm_fsys_get_dioinfo_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_dioinfo_t	*diop);typedef	int	(*dm_fsys_get_dirattrs_rvp_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		mask,			dm_attrloc_t	*locp,			size_t		buflen,			void		*bufp,			size_t		*rlenp,			int		*rvalp);typedef	int	(*dm_fsys_get_dmattr_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_attrname_t	*attrnamep,			size_t		buflen,			void		*bufp,			size_t		*rlenp);typedef	int	(*dm_fsys_get_eventlist_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		type,			u_int		nelem,			dm_eventset_t	*eventsetp,	/* in kernel space! */			u_int		*nelemp);		/* in kernel space! */typedef	int	(*dm_fsys_get_fileattr_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		mask,			dm_stat_t	*statp);typedef	int	(*dm_fsys_get_region_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		nelem,			dm_region_t	*regbufp,			u_int		*nelemp);typedef	int	(*dm_fsys_getall_dmattr_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			size_t		buflen,			void		*bufp,			size_t		*rlenp);typedef	int	(*dm_fsys_getall_inherit_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		nelem,			dm_inherit_t	*inheritbufp,			u_int		*nelemp);typedef	int	(*dm_fsys_init_attrloc_t)(			bhv_desc_t	*bdp,	/* sometimes root vnode */			dm_right_t	right,			dm_attrloc_t	*locp);typedef	int	(*dm_fsys_mkdir_by_handle_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			void		*hanp,			size_t		hlen,			char		*cname);typedef	int	(*dm_fsys_probe_hole_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_off_t	off,			dm_size_t	len,			dm_off_t	*roffp,			dm_size_t	*rlenp);typedef	int	(*dm_fsys_punch_hole_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_off_t	off,			dm_size_t	len);typedef	int	(*dm_fsys_read_invis_rvp_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_off_t	off,			dm_size_t	len,			void		*bufp,			int		*rvp);typedef	int	(*dm_fsys_release_right_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		type);typedef	int	(*dm_fsys_remove_dmattr_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			int		setdtime,			dm_attrname_t	*attrnamep);typedef	int	(*dm_fsys_request_right_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		type,	/* DM_FSYS_OBJ or zero */			u_int		flags,			dm_right_t	newright);typedef	int	(*dm_fsys_set_dmattr_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_attrname_t	*attrnamep,			int		setdtime,			size_t		buflen,			void		*bufp);typedef	int	(*dm_fsys_set_eventlist_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		type,			dm_eventset_t	*eventsetp,	/* in kernel space! */			u_int		maxevent);typedef	int	(*dm_fsys_set_fileattr_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		mask,			dm_fileattr_t	*attrp);typedef	int	(*dm_fsys_set_inherit_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			dm_attrname_t	*attrnamep,			mode_t		mode);typedef	int	(*dm_fsys_set_region_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		nelem,			dm_region_t	*regbufp,			dm_boolean_t	*exactflagp);typedef	int	(*dm_fsys_symlink_by_handle_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			void		*hanp,			size_t		hlen,			char		*cname,			char		*path);typedef	int	(*dm_fsys_sync_by_handle_t)(			bhv_desc_t	*bdp,			dm_right_t	right);typedef	int	(*dm_fsys_upgrade_right_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			u_int		type);		/* DM_FSYS_OBJ or zero */typedef	int	(*dm_fsys_write_invis_rvp_t)(			bhv_desc_t	*bdp,			dm_right_t	right,			int		flags,			dm_off_t	off,			dm_size_t	len,			void		*bufp,			int		*rvp);/* Structure definitions used by the VFS_DMAPI_FSYS_VECTOR call. */typedef	struct {	dm_fsys_switch_t  func_no;	/* function number */	union {		dm_fsys_clear_inherit_t clear_inherit;		dm_fsys_create_by_handle_t create_by_handle;		dm_fsys_downgrade_right_t downgrade_right;		dm_fsys_get_allocinfo_rvp_t get_allocinfo_rvp;		dm_fsys_get_bulkall_rvp_t get_bulkall_rvp;		dm_fsys_get_bulkattr_rvp_t get_bulkattr_rvp;		dm_fsys_get_config_t get_config;		dm_fsys_get_config_events_t get_config_events;		dm_fsys_get_destroy_dmattr_t get_destroy_dmattr;		dm_fsys_get_dioinfo_t get_dioinfo;		dm_fsys_get_dirattrs_rvp_t get_dirattrs_rvp;		dm_fsys_get_dmattr_t get_dmattr;		dm_fsys_get_eventlist_t get_eventlist;		dm_fsys_get_fileattr_t get_fileattr;		dm_fsys_get_region_t get_region;		dm_fsys_getall_dmattr_t getall_dmattr;		dm_fsys_getall_inherit_t getall_inherit;		dm_fsys_init_attrloc_t init_attrloc;		dm_fsys_mkdir_by_handle_t mkdir_by_handle;		dm_fsys_probe_hole_t probe_hole;		dm_fsys_punch_hole_t punch_hole;		dm_fsys_read_invis_rvp_t read_invis_rvp;		dm_fsys_release_right_t release_right;		dm_fsys_remove_dmattr_t remove_dmattr;		dm_fsys_request_right_t request_right;		dm_fsys_set_dmattr_t set_dmattr;		dm_fsys_set_eventlist_t set_eventlist;		dm_fsys_set_fileattr_t set_fileattr;		dm_fsys_set_inherit_t set_inherit;		dm_fsys_set_region_t set_region;		dm_fsys_symlink_by_handle_t symlink_by_handle;		dm_fsys_sync_by_handle_t sync_by_handle;		dm_fsys_upgrade_right_t upgrade_right;		dm_fsys_write_invis_rvp_t write_invis_rvp;	} u_fc;} fsys_function_vector_t;struct dm_fcntl_vector {	int	code_level;	int	count;		/* Number of functions in the vector */	fsys_function_vector_t *vecp;};typedef struct dm_fcntl_vector dm_fcntl_vector_t;struct dm_fcntl_mapevent {	size_t	length;			/* length of transfer */	dm_eventtype_t	max_event;	/* Maximum (WRITE or READ)  event */	int	error;			/* returned error code */};typedef struct dm_fcntl_mapevent dm_fcntl_mapevent_t;#endif	/* __KERNEL__ *//* The following definitions are needed both by the kernel and by the   library routines.*/#define	DM_MAX_HANDLE_SIZE	56	/* maximum size for a file handle *//* *  Opcodes for dmapi ioctl. */#define	DM_CLEAR_INHERIT	1#define	DM_CREATE_BY_HANDLE	2#define	DM_CREATE_SESSION	3#define	DM_CREATE_USEREVENT	4#define	DM_DESTROY_SESSION	5#define	DM_DOWNGRADE_RIGHT	6#define	DM_FD_TO_HANDLE		7#define	DM_FIND_EVENTMSG	8#define	DM_GET_ALLOCINFO	9#define	DM_GET_BULKALL		10#define	DM_GET_BULKATTR		11#define	DM_GET_CONFIG		12#define	DM_GET_CONFIG_EVENTS	13#define	DM_GET_DIOINFO		14#define	DM_GET_DIRATTRS		15#define	DM_GET_DMATTR		16#define	DM_GET_EVENTLIST	17#define	DM_GET_EVENTS		18#define	DM_GET_FILEATTR		19#define	DM_GET_MOUNTINFO	20#define	DM_GET_REGION		21#define	DM_GETALL_DISP		22#define	DM_GETALL_DMATTR	23#define	DM_GETALL_INHERIT	24#define	DM_GETALL_SESSIONS	25#define	DM_GETALL_TOKENS	26#define	DM_INIT_ATTRLOC		27#define	DM_MKDIR_BY_HANDLE	28#define	DM_MOVE_EVENT		29#define	DM_OBJ_REF_HOLD		30#define	DM_OBJ_REF_QUERY	31#define	DM_OBJ_REF_RELE		32#define	DM_PATH_TO_FSHANDLE	33#define	DM_PATH_TO_HANDLE	34#define	DM_PENDING		35#define	DM_PROBE_HOLE		36#define	DM_PUNCH_HOLE		37#define	DM_QUERY_RIGHT		38#define	DM_QUERY_SESSION	39#define	DM_READ_INVIS		40#define	DM_RELEASE_RIGHT	41#define	DM_REMOVE_DMATTR	42#define	DM_REQUEST_RIGHT	43#define	DM_RESPOND_EVENT	44#define	DM_SEND_MSG		45#define	DM_SET_DISP		46#define	DM_SET_DMATTR		47#define	DM_SET_EVENTLIST	48#define	DM_SET_FILEATTR		49#define	DM_SET_INHERIT		50#define	DM_SET_REGION		51#define	DM_SET_RETURN_ON_DESTROY 52#define	DM_SYMLINK_BY_HANDLE	53#define	DM_SYNC_BY_HANDLE	54#define	DM_UPGRADE_RIGHT	55#define	DM_WRITE_INVIS		56#endif /* __DMAPI_KERN_H__ */

⌨️ 快捷键说明

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