forked from enlightenment/efl
112 lines
2.4 KiB
C
112 lines
2.4 KiB
C
#ifndef __EVIL_FCNTL_H__
|
|
#define __EVIL_FCNTL_H__
|
|
|
|
|
|
# include <sys/types.h>
|
|
|
|
|
|
/**
|
|
* @def FD_CLOEXEC
|
|
* Specifies that the file descriptor should be closed when an exec()
|
|
* function is invoked.
|
|
*/
|
|
# define FD_CLOEXEC 1
|
|
|
|
/**
|
|
* @def O_NONBLOCK
|
|
* Specifies that the socket is in non-blocking mode.
|
|
*/
|
|
# define O_NONBLOCK 04000
|
|
|
|
/**
|
|
* @def F_SETFD
|
|
* Specifies that fcntl() should set the file descriptor flags
|
|
* associated with the filedes argument.
|
|
*/
|
|
|
|
/**
|
|
* @def F_SETLK
|
|
* Specifies that fcntl() should set or clear a file segment lock
|
|
* according to the lock description pointed to by the third argument.
|
|
*/
|
|
|
|
/**
|
|
* @def F_SETLKW
|
|
* Equivalent to F_SETLK except that if a shared or exclusive lock
|
|
* is blocked by other locks, the thread shall wait until the request
|
|
* can be satisfied.
|
|
*/
|
|
|
|
# define F_GETFD 1
|
|
# define F_SETFD 2
|
|
# define F_GETFL 3
|
|
# define F_SETFL 4
|
|
# define F_SETLK 6
|
|
# define F_SETLKW 7
|
|
|
|
/**
|
|
* @def F_RDLCK
|
|
* Read (or shared) lock
|
|
*/
|
|
|
|
/**
|
|
* @def F_WRLCK
|
|
* Write (or exclusive) lock
|
|
*/
|
|
|
|
/**
|
|
* @def F_UNLCK
|
|
* Remove lock
|
|
*/
|
|
|
|
# ifndef F_RDLCK
|
|
# define F_RDLCK 0
|
|
# define F_WRLCK 1
|
|
# define F_UNLCK 2
|
|
# endif /* ! F_RDLCK */
|
|
|
|
/**
|
|
* @struct flock
|
|
* @brief A structure that controls the lock of a file descriptor.
|
|
*/
|
|
struct flock
|
|
{
|
|
short int l_type; /**< lock type: read, write, ... */
|
|
short int l_whence; /**< type of l_start */
|
|
off_t l_start; /**< starting offset */
|
|
off_t l_len; /**< 0 means end of the file */
|
|
pid_t l_pid; /**< lock owner */
|
|
};
|
|
|
|
|
|
/**
|
|
* @brief Provide control over file descriptors.
|
|
*
|
|
* @param fd The file descriptor.
|
|
* @param cmd The type of control.
|
|
* @return 0 on success, -1 otherwise.
|
|
*
|
|
* Performs one of various miscellaneous operations on @p fd.
|
|
* The operation in question is determined by @p cmd:
|
|
*
|
|
* - F_SETFD: Set the close-on-exec flag to the value specified
|
|
* by the argument after command (only the least significant
|
|
* bit is used).
|
|
* - F_SETLK and F_SETLKW: used to manage discretionary file locks.
|
|
* The third argument must be a pointer to a struct flock (that
|
|
* may be overwritten by this call).
|
|
*
|
|
* This function returns 0 on success, -1 otherwise.
|
|
*
|
|
* Conformity: None.
|
|
*
|
|
* Supported OS: Windows Vista, Windows XP or Windows 2000
|
|
* Professional.
|
|
*
|
|
* @ingroup Evil
|
|
*/
|
|
EAPI int fcntl(int fd, int cmd, ...);
|
|
|
|
|
|
#endif /* __EVIL_FCNTL_H__ */
|