Project

General

Profile

Statistics
| Branch: | Revision:

scoutos / prex-0.9.0 / include / sys / fcntl.h @ 03e9c04a

History | View | Annotate | Download (5.23 KB)

1
/*-
2
 * Copyright (c) 1983, 1990, 1993
3
 *        The Regents of the University of California.  All rights reserved.
4
 * (c) UNIX System Laboratories, Inc.
5
 * All or some portions of this file are derived from material licensed
6
 * to the University of California by American Telephone and Telegraph
7
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
8
 * the permission of UNIX System Laboratories, Inc.
9
 *
10
 * Redistribution and use in source and binary forms, with or without
11
 * modification, are permitted provided that the following conditions
12
 * are met:
13
 * 1. Redistributions of source code must retain the above copyright
14
 *    notice, this list of conditions and the following disclaimer.
15
 * 2. Redistributions in binary form must reproduce the above copyright
16
 *    notice, this list of conditions and the following disclaimer in the
17
 *    documentation and/or other materials provided with the distribution.
18
 * 3. Neither the name of the University nor the names of its contributors
19
 *    may be used to endorse or promote products derived from this software
20
 *    without specific prior written permission.
21
 *
22
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32
 * SUCH DAMAGE.
33
 *
34
 *        @(#)fcntl.h        8.3 (Berkeley) 1/21/94
35
 */
36

    
37
#ifndef _SYS_FCNTL_H_
38
#define        _SYS_FCNTL_H_
39

    
40
/*
41
 * This file includes the definitions for open and fcntl
42
 * described by POSIX for <fcntl.h>.
43
 */
44

    
45
#include <sys/types.h>
46

    
47
/*
48
 * File status flags: these are used by open(2), fcntl(2).
49
 * They are also used (indirectly) in the kernel file structure f_flags,
50
 * which is a superset of the open/fcntl flags.  Open flags and f_flags
51
 * are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).
52
 * Open/fcntl flags begin with O_; kernel-internal flags begin with F.
53
 */
54
/* open-only flags */
55
#define        O_RDONLY        0x00000000        /* open for reading only */
56
#define        O_WRONLY        0x00000001        /* open for writing only */
57
#define        O_RDWR                0x00000002        /* open for reading and writing */
58
#define        O_ACCMODE        0x00000003        /* mask for above modes */
59

    
60
/*
61
 * Kernel encoding of open mode; separate read and write bits that are
62
 * independently testable: 1 greater than the above.
63
 */
64
#define        FREAD                0x00000001
65
#define        FWRITE                0x00000002
66

    
67
#define        O_NONBLOCK        0x00000004        /* no delay */
68
#define        O_APPEND        0x00000008        /* set append mode */
69
#define        O_SHLOCK        0x00000010        /* open with shared file lock */
70
#define        O_EXLOCK        0x00000020        /* open with exclusive file lock */
71
#define        O_ASYNC                0x00000040        /* signal pgrp when data ready */
72
#define        O_SYNC                0x00000080        /* synchronous writes */
73
#define        O_CREAT                0x00000200        /* create if nonexistent */
74
#define        O_TRUNC                0x00000400        /* truncate to zero length */
75
#define        O_EXCL                0x00000800        /* error if already exists */
76

    
77
#define        FPIPE                0x00010000        /* pipe */
78

    
79
/* defined by POSIX 1003.1; BSD default, so no bit required */
80
#define        O_NOCTTY        0                /* don't assign controlling terminal */
81

    
82
/* convert from open() flags to/from fflags; convert O_RD/WR to FREAD/FWRITE */
83
#define        FFLAGS(oflags)        ((oflags) + 1)
84
#define        OFLAGS(fflags)        ((fflags) - 1)
85

    
86
/*
87
 * Constants used for fcntl(2)
88
 */
89

    
90
/* command values */
91
#define        F_DUPFD                0                /* duplicate file descriptor */
92
#define        F_GETFD                1                /* get file descriptor flags */
93
#define        F_SETFD                2                /* set file descriptor flags */
94
#define        F_GETFL                3                /* get file status flags */
95
#define        F_SETFL                4                /* set file status flags */
96
#define        F_GETOWN        5                /* get SIGIO/SIGURG proc/pgrp */
97
#define F_SETOWN        6                /* set SIGIO/SIGURG proc/pgrp */
98
#define        F_GETLK                7                /* get record locking information */
99
#define        F_SETLK                8                /* set record locking information */
100
#define        F_SETLKW        9                /* F_SETLK; wait if blocked */
101

    
102
/* file descriptor flags (F_GETFD, F_SETFD) */
103
#define        FD_CLOEXEC        1                /* close-on-exec flag */
104

    
105
/* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */
106
#define        F_RDLCK                1                /* shared or read lock */
107
#define        F_UNLCK                2                /* unlock */
108
#define        F_WRLCK                3                /* exclusive or write lock */
109

    
110
/*
111
 * Advisory file segment locking data type -
112
 * information passed to system by user
113
 */
114
struct flock {
115
        off_t        l_start;        /* starting offset */
116
        off_t        l_len;                /* len = 0 means until end of file */
117
        pid_t        l_pid;                /* lock owner */
118
        short        l_type;                /* lock type: read/write, etc. */
119
        short        l_whence;        /* type of l_start */
120
};
121

    
122
/* lock operations for flock(2) */
123
#define        LOCK_SH                0x01                /* shared file lock */
124
#define        LOCK_EX                0x02                /* exclusive file lock */
125
#define        LOCK_NB                0x04                /* don't block when locking */
126
#define        LOCK_UN                0x08                /* unlock file */
127

    
128

    
129
#include <sys/cdefs.h>
130

    
131
__BEGIN_DECLS
132
int        open(const char *, int, ...);
133
int        creat(const char *, mode_t);
134
int        fcntl(int, int, ...);
135
#if 0
136
int        flock(int, int);
137
#endif
138
__END_DECLS
139

    
140
#endif /* !_SYS_FCNTL_H_ */