You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.0 KiB
103 lines
3.0 KiB
4 years ago
|
/*
|
||
|
** 2004 May 22
|
||
|
**
|
||
|
** The author disclaims copyright to this source code. In place of
|
||
|
** a legal notice, here is a blessing:
|
||
|
**
|
||
|
** May you do good and not evil.
|
||
|
** May you find forgiveness for yourself and forgive others.
|
||
|
** May you share freely, never taking more than you give.
|
||
|
**
|
||
|
******************************************************************************
|
||
|
**
|
||
|
** This header file defined OS-specific features for Unix.
|
||
|
*/
|
||
|
#ifndef _SQLITE_OS_UNIX_H_
|
||
|
#define _SQLITE_OS_UNIX_H_
|
||
|
|
||
|
/*
|
||
|
** Helpful hint: To get this to compile on HP/UX, add -D_INCLUDE_POSIX_SOURCE
|
||
|
** to the compiler command line.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
** These #defines should enable >2GB file support on Posix if the
|
||
|
** underlying operating system supports it. If the OS lacks
|
||
|
** large file support, or if the OS is windows, these should be no-ops.
|
||
|
**
|
||
|
** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
|
||
|
** on the compiler command line. This is necessary if you are compiling
|
||
|
** on a recent machine (ex: RedHat 7.2) but you want your code to work
|
||
|
** on an older machine (ex: RedHat 6.0). If you compile on RedHat 7.2
|
||
|
** without this option, LFS is enable. But LFS does not exist in the kernel
|
||
|
** in RedHat 6.0, so the code won't work. Hence, for maximum binary
|
||
|
** portability you should omit LFS.
|
||
|
**
|
||
|
** Similar is true for MacOS. LFS is only supported on MacOS 9 and later.
|
||
|
*/
|
||
|
#ifndef SQLITE_DISABLE_LFS
|
||
|
# define _LARGE_FILE 1
|
||
|
# ifndef _FILE_OFFSET_BITS
|
||
|
# define _FILE_OFFSET_BITS 64
|
||
|
# endif
|
||
|
# define _LARGEFILE_SOURCE 1
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
** standard include files.
|
||
|
*/
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/stat.h>
|
||
|
#include <fcntl.h>
|
||
|
#include <unistd.h>
|
||
|
|
||
|
/*
|
||
|
** The OsFile structure is a operating-system independing representation
|
||
|
** of an open file handle. It is defined differently for each architecture.
|
||
|
**
|
||
|
** This is the definition for Unix.
|
||
|
**
|
||
|
** OsFile.locktype takes one of the values SHARED_LOCK, RESERVED_LOCK,
|
||
|
** PENDING_LOCK or EXCLUSIVE_LOCK.
|
||
|
*/
|
||
|
typedef struct OsFile OsFile;
|
||
|
struct OsFile {
|
||
|
struct Pager *pPager; /* The pager that owns this OsFile. Might be 0 */
|
||
|
struct openCnt *pOpen; /* Info about all open fd's on this inode */
|
||
|
struct lockInfo *pLock; /* Info about locks on this inode */
|
||
|
int h; /* The file descriptor */
|
||
|
unsigned char locktype; /* The type of lock held on this fd */
|
||
|
unsigned char isOpen; /* True if needs to be closed */
|
||
|
unsigned char fullSync; /* Use F_FULLSYNC if available */
|
||
|
int dirfd; /* File descriptor for the directory */
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
** A macro to set the OsFile.fullSync flag, if it exists.
|
||
|
*/
|
||
|
#define SET_FULLSYNC(x,y) ((x).fullSync = (y))
|
||
|
|
||
|
/*
|
||
|
** Maximum number of characters in a temporary file name
|
||
|
*/
|
||
|
#define SQLITE_TEMPNAME_SIZE 200
|
||
|
|
||
|
/*
|
||
|
** Minimum interval supported by sqlite3OsSleep().
|
||
|
*/
|
||
|
#if defined(HAVE_USLEEP) && HAVE_USLEEP
|
||
|
# define SQLITE_MIN_SLEEP_MS 1
|
||
|
#else
|
||
|
# define SQLITE_MIN_SLEEP_MS 1000
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
** Default permissions when creating a new file
|
||
|
*/
|
||
|
#ifndef SQLITE_DEFAULT_FILE_PERMISSIONS
|
||
|
# define SQLITE_DEFAULT_FILE_PERMISSIONS 0644
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif /* _SQLITE_OS_UNIX_H_ */
|