Home | History | Annotate | Download | only in sys
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License (the "License").
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets "[]" replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 
     22 /*
     23  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
     24  * Use is subject to license terms.
     25  */
     26 
     27 #ifndef	_SYS_PORT_H
     28 #define	_SYS_PORT_H
     29 
     30 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     31 
     32 #ifdef	__cplusplus
     33 extern "C" {
     34 #endif
     35 
     36 #include <sys/types.h>
     37 
     38 /* port sources */
     39 #define	PORT_SOURCE_AIO		1
     40 #define	PORT_SOURCE_TIMER	2
     41 #define	PORT_SOURCE_USER	3
     42 #define	PORT_SOURCE_FD		4
     43 #define	PORT_SOURCE_ALERT	5
     44 #define	PORT_SOURCE_MQ		6
     45 #define	PORT_SOURCE_FILE	7
     46 
     47 typedef struct port_event {
     48 	int		portev_events;	/* event data is source specific */
     49 	ushort_t	portev_source;	/* event source */
     50 	ushort_t	portev_pad;	/* port internal use */
     51 	uintptr_t	portev_object;	/* source specific object */
     52 	void		*portev_user;	/* user cookie */
     53 } port_event_t;
     54 
     55 typedef	struct	port_notify {
     56 	int		portnfy_port;	/* bind request(s) to port */
     57 	void		*portnfy_user;	/* user defined */
     58 } port_notify_t;
     59 
     60 
     61 typedef struct file_obj {
     62 	timestruc_t	fo_atime;	/* Access time from stat(2) */
     63 	timestruc_t	fo_mtime;	/* Modification time from stat(2) */
     64 	timestruc_t	fo_ctime;	/* Change time from stat(2) */
     65 	uintptr_t	fo_pad[3];	/* For future expansion */
     66 	char		*fo_name;	/* Null terminated file name */
     67 } file_obj_t;
     68 
     69 #if defined(_SYSCALL32)
     70 
     71 typedef struct file_obj32 {
     72 	timestruc32_t	fo_atime;	/* Access time got from stat(2) */
     73 	timestruc32_t	fo_mtime;	/* Modification time from stat(2) */
     74 	timestruc32_t	fo_ctime;	/* Change time from stat(2) */
     75 	caddr32_t	fo_pad[3];	/* For future expansion */
     76 	caddr32_t	fo_name;	/* Null terminated file name */
     77 } file_obj32_t;
     78 
     79 typedef struct port_event32 {
     80 	int		portev_events;	/* events detected */
     81 	ushort_t	portev_source;	/* user, timer, aio, etc */
     82 	ushort_t	portev_pad;	/* reserved */
     83 	caddr32_t	portev_object;	/* fd, timerid, ... */
     84 	caddr32_t	portev_user;	/* user cookie */
     85 } port_event32_t;
     86 
     87 typedef	struct	port_notify32 {
     88 	int		portnfy_port;	/* bind request(s) to port */
     89 	caddr32_t 	portnfy_user;	/* user defined */
     90 } port_notify32_t;
     91 
     92 #endif /* _SYSCALL32 */
     93 
     94 /* port_alert() flags */
     95 #define	PORT_ALERT_SET		0x01
     96 #define	PORT_ALERT_UPDATE	0x02
     97 #define	PORT_ALERT_INVALID	(PORT_ALERT_SET | PORT_ALERT_UPDATE)
     98 
     99 /*
    100  * PORT_SOURCE_FILE - events
    101  */
    102 
    103 /*
    104  * User watchable file events
    105  */
    106 #define	FILE_ACCESS		0x00000001
    107 #define	FILE_MODIFIED		0x00000002
    108 #define	FILE_ATTRIB		0x00000004
    109 #define	FILE_NOFOLLOW		0x10000000
    110 
    111 /*
    112  * exception file events
    113  */
    114 
    115 /*
    116  * The watched file..
    117  */
    118 #define	FILE_DELETE		0x00000010
    119 #define	FILE_RENAME_TO		0x00000020
    120 #define	FILE_RENAME_FROM	0x00000040
    121 /*
    122  * The filesystem on which the watched file resides got
    123  * unmounted.
    124  */
    125 #define	UNMOUNTED		0x20000000
    126 /*
    127  * Some other file/filesystem got mounted over the
    128  * watched file/directory.
    129  */
    130 #define	MOUNTEDOVER		0x40000000
    131 
    132 /*
    133  * Helper type
    134  */
    135 #define	FILE_EXCEPTION		(UNMOUNTED|FILE_DELETE|FILE_RENAME_TO \
    136 				|FILE_RENAME_FROM|MOUNTEDOVER)
    137 
    138 #ifdef	__cplusplus
    139 }
    140 #endif
    141 
    142 #endif	/* _SYS_PORT_H */
    143