#!/bin/sh
GVF=FIO-VERSION-FILE
-DEF_VER=fio-2.0.13
+DEF_VER=fio-2.0.14
LF='
'
of the Ubuntu "universe" repository.
http://packages.ubuntu.com/search?keywords=fio
-SUSE:
-Pascal Bleser <guru@unixtech.be> has fio RPMs in his repository for SUSE
-variants, you can find them here:
-http://linux01.gwdg.de/~pbleser/rpm-navigation.php?cat=System/fio
-
Red Hat, CentOS & Co:
Dag Wieƫrs has RPMs for Red Hat related distros, find them here:
http://dag.wieers.com/rpm/packages/fio/
Windows:
Bruce Cran <bruce@cran.org.uk> has fio packages for Windows at
-http://www.bluestop.org/fio .
+http://www.bluestop.org/fio/ .
Mailing list
To build fio on 32-bit Windows, download x86/pthreadGC2.dll instead and do
'./configure --build-32bit-win=yes' before 'make'.
+It's recommended that once built or installed, fio be run in a Command Prompt
+or other 'native' console such as console2, since there are known to be display
+and signal issues when running it under a Cygwin shell
+(see http://code.google.com/p/mintty/issues/detail?id=56 for details).
+
Command line
------------
return ia64_popcnt(bitmask & (~bitmask - 1));
}
-static inline unsigned long get_cpu_clock(void)
+static inline unsigned long long get_cpu_clock(void)
{
- unsigned long ret;
+ unsigned long long ret;
__asm__ __volatile__("mov %0=ar.itc" : "=r" (ret) : : "memory");
return ret;
static inline unsigned long long get_cpu_clock(void)
{
- unsigned long ret;
+ unsigned long long ret;
__asm__ __volatile__("rdtsc" : "=A" (ret));
return ret;
for_each_file(td, f, i) {
uint64_t file_size = min(f->real_file_size, f->io_size);
- blocks = (file_size + td->o.rw_min_bs - 1) /
- (unsigned long long) td->o.rw_min_bs;
+ blocks = file_size / (unsigned long long) td->o.rw_min_bs;
+
if (td->o.random_generator == FIO_RAND_GEN_LFSR) {
unsigned long seed;
unsigned int nr_cpus = cpus_online();
struct clock_entry *entries;
unsigned long tentries, failed;
+ struct clock_entry *prev, *this;
uint64_t seq = 0;
int i;
qsort(entries, tentries, sizeof(struct clock_entry), clock_cmp);
for (failed = i = 0; i < tentries; i++) {
- struct clock_entry *prev, *this = &entries[i];
+ this = &entries[i];
if (!i) {
prev = this;
unsigned int bit, void *__data)
{
struct axmap_next_free_data *data = __data;
- uint64_t mask = ~((1UL << ((data->bit & BLOCKS_PER_UNIT_MASK) + 1)) - 1);
+ uint64_t mask = ~bit_masks[(data->bit + 1) & BLOCKS_PER_UNIT_MASK];
- if (!(mask & al->map[offset]))
+ if (!(mask & ~al->map[offset]))
return 0;
if (al->map[offset] != -1UL) {
uint64_t axmap_next_free(struct axmap *axmap, uint64_t bit_nr)
{
struct axmap_next_free_data data = { .level = -1U, .bit = bit_nr, };
+ uint64_t ret;
if (firstfree_valid(axmap) && bit_nr < axmap->first_free)
return axmap->first_free;
assert(data.level != -1U);
- return axmap_find_first_free(axmap, data.level, data.offset);
+ /*
+ * In the rare case that the map is unaligned, we might end up
+ * finding an offset that's beyond the valid end. For that case,
+ * find the first free one, the map is practically full.
+ */
+ ret = axmap_find_first_free(axmap, data.level, data.offset);
+ if (ret != -1ULL)
+ return ret;
+
+ return axmap_first_free(axmap);
}
#include <sys/disk.h>
#include <sys/thr.h>
#include <sys/socket.h>
+#include <sys/param.h>
+#include <sys/cpuset.h>
#include "../file.h"
#define FIO_USE_GENERIC_INIT_RANDOM_STATE
#define FIO_HAVE_CHARDEV_SIZE
#define FIO_HAVE_GETTID
+#define FIO_HAVE_CPU_AFFINITY
#define OS_MAP_ANON MAP_ANON
typedef off_t off64_t;
+typedef cpuset_t os_cpu_mask_t;
+
+#define fio_cpu_clear(mask, cpu) (void) CPU_CLR((cpu), (mask))
+#define fio_cpu_set(mask, cpu) (void) CPU_SET((cpu), (mask))
+
+static inline int fio_cpuset_init(os_cpu_mask_t *mask)
+{
+ CPU_ZERO(mask);
+ return 0;
+}
+
+static inline int fio_cpuset_exit(os_cpu_mask_t *mask)
+{
+ return 0;
+}
+
+static inline int fio_setaffinity(int pid, os_cpu_mask_t cpumask)
+{
+ return cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, pid, sizeof(cpumask), &cpumask);
+}
+
+static inline int fio_getaffinity(int pid, os_cpu_mask_t *cpumask)
+{
+ return cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, sizeof(cpumask), cpumask);
+}
+
+#define FIO_MAX_CPUS CPU_SETSIZE
+
static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes)
{
off_t size;
-<?xml version="1.0" encoding="utf-8"?>\r
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">\r
- <Fragment>\r
- <DirectoryRef Id="examples">\r
- <Component>\r
- <File Source="..\..\examples\1mbs_clients" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\aio-read" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\disk-zone-profile" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\fsx" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\iometer-file-access-server" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\netio" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\ssd-test" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\surface-scan" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\tiobench-example" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\null" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\flow" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\cpuio" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\falloc" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\fusion-aw-sync.ini" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\ssd-steadystate.fio" />\r
- </Component>\r
- <Component>\r
- <File Source="..\..\examples\zipf" />\r
- </Component>\r
- </DirectoryRef>\r
- </Fragment>\r
- <Fragment>\r
- <ComponentGroup Id="examples">\r
- <ComponentRef Id="_1mbs_clients" />\r
- <ComponentRef Id="aio_read" />\r
- <ComponentRef Id="disk_zone_profile" />\r
- <ComponentRef Id="fsx" />\r
- <ComponentRef Id="iometer_file_access_server" />\r
- <ComponentRef Id="netio" />\r
- <ComponentRef Id="ssd_test" />\r
- <ComponentRef Id="surface_scan" />\r
- <ComponentRef Id="tiobench_example" />\r
- <ComponentRef Id="null" />\r
- <ComponentRef Id="flow" />\r
- <ComponentRef Id="cpuio" />\r
- <ComponentRef Id="falloc" />\r
- <ComponentRef Id="fusion_aw_sync.ini" />\r
- <ComponentRef Id="ssd_steadystate.fio" />\r
- <ComponentRef Id="zipf" />\r
- </ComponentGroup>\r
- </Fragment>\r
-</Wix>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+ <Fragment>
+ <DirectoryRef Id="examples">
+ <Component>
+ <File Source="..\..\examples\1mbs_clients" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\aio-read" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\disk-zone-profile" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\fsx" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\iometer-file-access-server" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\netio" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\ssd-test" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\surface-scan" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\tiobench-example" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\null" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\flow" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\cpuio" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\falloc" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\fusion-aw-sync.ini" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\ssd-steadystate.fio" />
+ </Component>
+ <Component>
+ <File Source="..\..\examples\zipf" />
+ </Component>
+ </DirectoryRef>
+ </Fragment>
+ <Fragment>
+ <ComponentGroup Id="examples">
+ <ComponentRef Id="_1mbs_clients" />
+ <ComponentRef Id="aio_read" />
+ <ComponentRef Id="disk_zone_profile" />
+ <ComponentRef Id="fsx" />
+ <ComponentRef Id="iometer_file_access_server" />
+ <ComponentRef Id="netio" />
+ <ComponentRef Id="ssd_test" />
+ <ComponentRef Id="surface_scan" />
+ <ComponentRef Id="tiobench_example" />
+ <ComponentRef Id="null" />
+ <ComponentRef Id="flow" />
+ <ComponentRef Id="cpuio" />
+ <ComponentRef Id="falloc" />
+ <ComponentRef Id="fusion_aw_sync.ini" />
+ <ComponentRef Id="ssd_steadystate.fio" />
+ <ComponentRef Id="zipf" />
+ </ComponentGroup>
+ </Fragment>
+</Wix>
-<?xml version="1.0" encoding="utf-8"?>\r
-<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">\r
-\r
- <?if $(env.FIO_ARCH) = x86 ?>\r
- <?define ProgramDirectory = ProgramFilesFolder ?>\r
- <?else?>\r
- <?define ProgramDirectory = ProgramFiles64Folder ?>\r
- <?endif?>\r
-\r
- <Product Id="*"\r
- Codepage="1252" Language="1033"\r
- Manufacturer="fio" Name="fio"\r
- UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.0.13">\r
- <Package\r
- Description="Flexible IO Tester"\r
- InstallerVersion="301" Keywords="Installer,MSI,Database"\r
- Languages="1033" Manufacturer="fio"\r
- InstallScope="perMachine" InstallPrivileges="elevated" Compressed="yes"/>\r
-\r
- <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" CompressionLevel="high"/>\r
-\r
- <Directory Id="TARGETDIR" Name="SourceDir">\r
- <Directory Id="$(var.ProgramDirectory)">\r
- <Directory Id="INSTALLDIR">\r
- <Directory Id="fio" Name="fio">\r
- <Component>\r
- <File Source="..\..\fio.exe"/>\r
- </Component>\r
- <Component>\r
- <File KeyPath="yes" Source="..\..\pthreadGC2.dll"/>\r
- </Component>\r
- <Component>\r
- <File Id="README" Name="README.rtf" Source="..\..\README"/>\r
- </Component>\r
- <Component>\r
- <File Id="REPORTING_BUGS" Name="REPORTING-BUGS.rtf" Source="..\..\REPORTING-BUGS"/>\r
- </Component>\r
- <Component>\r
- <File Id="HOWTO" Name="HOWTO.rtf" Source="..\..\HOWTO"/>\r
- </Component>\r
- <Component>\r
- <File Id="COPYING" Name="COPYING.rtf" Source="..\..\COPYING"/>\r
- </Component>\r
- <Directory Id="examples" Name="examples"/>\r
- </Directory>\r
- </Directory>\r
- </Directory>\r
- </Directory>\r
-\r
- <Feature Id="AlwaysInstall" Absent="disallow" ConfigurableDirectory="INSTALLDIR" Display="hidden" Level="1" Title="Flexible IO Tester">\r
- <ComponentRef Id="fio.exe"/>\r
- <ComponentRef Id="pthreadGC2.dll"/>\r
- <ComponentRef Id="HOWTO"/>\r
- <ComponentRef Id="README"/>\r
- <ComponentRef Id="REPORTING_BUGS"/>\r
- <ComponentRef Id="COPYING"/>\r
- <ComponentGroupRef Id="examples"/>\r
- </Feature>\r
-\r
- <Property Id="ARPURLINFOABOUT" Value="http://git.kernel.dk/?p=fio.git" />\r
- <Property Id='ARPCONTACT'>fio@vger.kernel.org</Property>\r
- <Property Id='ARPHELPLINK'>http://www.spinics.net/lists/fio/</Property>\r
- <Property Id='ARPURLUPDATEINFO'>http://git.kernel.dk/?p=fio.git</Property>\r
-\r
- <WixVariable Id="WixUILicenseRtf" Value="eula.rtf" />\r
-\r
- <UIRef Id="WixUI_Minimal"/>\r
-\r
- <MajorUpgrade AllowDowngrades="no" DowngradeErrorMessage="A newer version of the application is already installed."/>\r
-</Product>\r
-</Wix>\r
+<?xml version="1.0" encoding="utf-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+
+ <?if $(env.FIO_ARCH) = x86 ?>
+ <?define ProgramDirectory = ProgramFilesFolder ?>
+ <?else?>
+ <?define ProgramDirectory = ProgramFiles64Folder ?>
+ <?endif?>
+
+ <Product Id="*"
+ Codepage="1252" Language="1033"
+ Manufacturer="fio" Name="fio"
+ UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.0.14">
+ <Package
+ Description="Flexible IO Tester"
+ InstallerVersion="301" Keywords="Installer,MSI,Database"
+ Languages="1033" Manufacturer="fio"
+ InstallScope="perMachine" InstallPrivileges="elevated" Compressed="yes"/>
+
+ <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" CompressionLevel="high"/>
+
+ <Directory Id="TARGETDIR" Name="SourceDir">
+ <Directory Id="$(var.ProgramDirectory)">
+ <Directory Id="INSTALLDIR">
+ <Directory Id="fio" Name="fio">
+ <Component>
+ <File Source="..\..\fio.exe"/>
+ </Component>
+ <Component>
+ <File KeyPath="yes" Source="..\..\pthreadGC2.dll"/>
+ </Component>
+ <Component>
+ <File Id="README" Name="README.rtf" Source="..\..\README"/>
+ </Component>
+ <Component>
+ <File Id="REPORTING_BUGS" Name="REPORTING-BUGS.rtf" Source="..\..\REPORTING-BUGS"/>
+ </Component>
+ <Component>
+ <File Id="HOWTO" Name="HOWTO.rtf" Source="..\..\HOWTO"/>
+ </Component>
+ <Component>
+ <File Id="COPYING" Name="COPYING.rtf" Source="..\..\COPYING"/>
+ </Component>
+ <Directory Id="examples" Name="examples"/>
+ </Directory>
+ </Directory>
+ </Directory>
+ </Directory>
+
+ <Feature Id="AlwaysInstall" Absent="disallow" ConfigurableDirectory="INSTALLDIR" Display="hidden" Level="1" Title="Flexible IO Tester">
+ <ComponentRef Id="fio.exe"/>
+ <ComponentRef Id="pthreadGC2.dll"/>
+ <ComponentRef Id="HOWTO"/>
+ <ComponentRef Id="README"/>
+ <ComponentRef Id="REPORTING_BUGS"/>
+ <ComponentRef Id="COPYING"/>
+ <ComponentGroupRef Id="examples"/>
+ </Feature>
+
+ <Property Id="ARPURLINFOABOUT" Value="http://git.kernel.dk/?p=fio.git" />
+ <Property Id='ARPCONTACT'>fio@vger.kernel.org</Property>
+ <Property Id='ARPHELPLINK'>http://www.spinics.net/lists/fio/</Property>
+ <Property Id='ARPURLUPDATEINFO'>http://git.kernel.dk/?p=fio.git</Property>
+
+ <WixVariable Id="WixUILicenseRtf" Value="eula.rtf" />
+
+ <UIRef Id="WixUI_Minimal"/>
+
+ <MajorUpgrade AllowDowngrades="no" DowngradeErrorMessage="A newer version of the application is already installed."/>
+</Product>
+</Wix>
-#ifndef ARPA_INET_H\r
-#define ARPA_INET_H\r
-\r
-#include <winsock2.h>\r
-#include <inttypes.h>\r
-\r
-typedef int socklen_t;\r
-\r
-const char *inet_ntop(int af, const void *restrict src,\r
- char *restrict dst, socklen_t size);\r
-int inet_pton(int af, const char *restrict src, void *restrict dst);\r
-\r
-#endif /* ARPA_INET_H */\r
+#ifndef ARPA_INET_H
+#define ARPA_INET_H
+
+#include <winsock2.h>
+#include <inttypes.h>
+
+typedef int socklen_t;
+
+const char *inet_ntop(int af, const void *restrict src,
+ char *restrict dst, socklen_t size);
+int inet_pton(int af, const char *restrict src, void *restrict dst);
+
+#endif /* ARPA_INET_H */
-#ifndef ASM_TYPES_H\r
-#define ASM_TYPES_H\r
-\r
-typedef unsigned short __u16;\r
-typedef unsigned int __u32;\r
-typedef unsigned long long __u64;\r
-\r
-#endif /* ASM_TYPES_H */\r
+#ifndef ASM_TYPES_H
+#define ASM_TYPES_H
+
+typedef unsigned short __u16;
+typedef unsigned int __u32;
+typedef unsigned long long __u64;
+
+#endif /* ASM_TYPES_H */
-#ifndef DIRENT_H\r
-#define DIRENT_H\r
-\r
-#include <windows.h>\r
-\r
-struct dirent\r
-{\r
- ino_t d_ino; /* File serial number */\r
- char d_name[MAX_PATH]; /* Name of entry */\r
-};\r
-\r
-struct dirent_ctx\r
-{\r
- HANDLE find_handle;\r
- char dirname[MAX_PATH];\r
-};\r
-\r
-typedef struct dirent_ctx DIR;\r
-\r
-DIR *opendir(const char *dirname);\r
-struct dirent *readdir(DIR *dirp);\r
-int closedir(DIR *dirp);\r
-\r
-#endif /* DIRENT_H */\r
+#ifndef DIRENT_H
+#define DIRENT_H
+
+#include <windows.h>
+
+struct dirent
+{
+ ino_t d_ino; /* File serial number */
+ char d_name[MAX_PATH]; /* Name of entry */
+};
+
+struct dirent_ctx
+{
+ HANDLE find_handle;
+ char dirname[MAX_PATH];
+};
+
+typedef struct dirent_ctx DIR;
+
+DIR *opendir(const char *dirname);
+struct dirent *readdir(DIR *dirp);
+int closedir(DIR *dirp);
+
+#endif /* DIRENT_H */
-#ifndef DLFCN_H\r
-#define DLFCN_H\r
-\r
-#define RTLD_LAZY 1\r
-\r
-void *dlopen(const char *file, int mode);\r
-int dlclose(void *handle);\r
-void *dlsym(void *restrict handle, const char *restrict name);\r
-char *dlerror(void);\r
-\r
-#endif /* DLFCN_H */\r
+#ifndef DLFCN_H
+#define DLFCN_H
+
+#define RTLD_LAZY 1
+
+void *dlopen(const char *file, int mode);
+int dlclose(void *handle);
+void *dlsym(void *restrict handle, const char *restrict name);
+char *dlerror(void);
+
+#endif /* DLFCN_H */
-#ifndef LIBGEN_H\r
-#define LIBGEN_H\r
-\r
-char *basename(char *path);\r
-\r
-#endif /* LIBGEN_H */\r
+#ifndef LIBGEN_H
+#define LIBGEN_H
+
+char *basename(char *path);
+
+#endif /* LIBGEN_H */
-#ifndef NETDB_H\r
-#define NETDB_H\r
-\r
-#endif /* NETDB_H */\r
+#ifndef NETDB_H
+#define NETDB_H
+
+#endif /* NETDB_H */
-#ifndef NETINET_IN_H\r
-#define NETINET_IN_H\r
-\r
-#include <inttypes.h>\r
-#include <sys/un.h>\r
-\r
-struct in6_addr\r
-{\r
- uint8_t s6_addr[16];\r
-};\r
-\r
-struct sockaddr_in6\r
-{\r
- sa_family_t sin6_family; /* AF_INET6 */\r
- in_port_t sin6_port; /* Port number */\r
- uint32_t sin6_flowinfo; /* IPv6 traffic class and flow information */\r
- struct in6_addr sin6_addr; /* IPv6 address */\r
- uint32_t sin6_scope_id; /* Set of interfaces for a scope */\r
-};\r
-\r
-#endif /* NETINET_IN_H */\r
+#ifndef NETINET_IN_H
+#define NETINET_IN_H
+
+#include <inttypes.h>
+#include <sys/un.h>
+
+struct in6_addr
+{
+ uint8_t s6_addr[16];
+};
+
+struct sockaddr_in6
+{
+ sa_family_t sin6_family; /* AF_INET6 */
+ in_port_t sin6_port; /* Port number */
+ uint32_t sin6_flowinfo; /* IPv6 traffic class and flow information */
+ struct in6_addr sin6_addr; /* IPv6 address */
+ uint32_t sin6_scope_id; /* Set of interfaces for a scope */
+};
+
+#endif /* NETINET_IN_H */
-#ifndef POLL_H\r
-#define POLL_H\r
-\r
-#endif /* POLL_H */\r
+#ifndef POLL_H
+#define POLL_H
+
+#endif /* POLL_H */
-#ifndef SEMAPHORE_H\r
-#define SEMAPHORE_H\r
-\r
-#endif /* SEMAPHORE_H */\r
+#ifndef SEMAPHORE_H
+#define SEMAPHORE_H
+
+#endif /* SEMAPHORE_H */
-#ifndef SYS_IPC_H\r
-#define SYS_IPC_H\r
-\r
-#endif /* SYS_IPC_H */\r
+#ifndef SYS_IPC_H
+#define SYS_IPC_H
+
+#endif /* SYS_IPC_H */
-#ifndef SYS_MMAN_H\r
-#define SYS_MMAN_H\r
-\r
-#include <sys/types.h>\r
-\r
-#define PROT_NONE 0x1\r
-#define PROT_READ 0x2\r
-#define PROT_WRITE 0x4\r
-\r
-#define MAP_ANON 0x1\r
-#define MAP_ANONYMOUS MAP_ANON\r
-#define MAP_FIXED 0x2\r
-#define MAP_HASSEMAPHORE 0x4\r
-#define MAP_INHERIT 0x8\r
-#define MAP_NOCORE 0x10\r
-#define MAP_NOSYNC 0x20\r
-#define MAP_PREFAULT_READ 0x40\r
-#define MAP_PRIVATE 0x80\r
-#define MAP_SHARED 0x100\r
-#define MAP_STACK 0x200\r
-\r
-#define MAP_FAILED NULL\r
-\r
-#define MS_ASYNC 0x1\r
-#define MS_SYNC 0x2\r
-#define MS_INVALIDATE 0x3\r
-\r
-int posix_madvise(void *addr, size_t len, int advice);\r
-void *mmap(void *addr, size_t len, int prot, int flags,\r
- int fildes, off_t off);\r
-int munmap(void *addr, size_t len);\r
-int msync(void *addr, size_t len, int flags);\r
-int munlock(const void * addr, size_t len);\r
-int mlock(const void *addr, size_t len);\r
-\r
-#endif /* SYS_MMAN_H */\r
+#ifndef SYS_MMAN_H
+#define SYS_MMAN_H
+
+#include <sys/types.h>
+
+#define PROT_NONE 0x1
+#define PROT_READ 0x2
+#define PROT_WRITE 0x4
+
+#define MAP_ANON 0x1
+#define MAP_ANONYMOUS MAP_ANON
+#define MAP_FIXED 0x2
+#define MAP_HASSEMAPHORE 0x4
+#define MAP_INHERIT 0x8
+#define MAP_NOCORE 0x10
+#define MAP_NOSYNC 0x20
+#define MAP_PREFAULT_READ 0x40
+#define MAP_PRIVATE 0x80
+#define MAP_SHARED 0x100
+#define MAP_STACK 0x200
+
+#define MAP_FAILED NULL
+
+#define MS_ASYNC 0x1
+#define MS_SYNC 0x2
+#define MS_INVALIDATE 0x3
+
+int posix_madvise(void *addr, size_t len, int advice);
+void *mmap(void *addr, size_t len, int prot, int flags,
+ int fildes, off_t off);
+int munmap(void *addr, size_t len);
+int msync(void *addr, size_t len, int flags);
+int munlock(const void * addr, size_t len);
+int mlock(const void *addr, size_t len);
+
+#endif /* SYS_MMAN_H */
-#ifndef SYS_POLL_H\r
-#define SYS_POLL_H\r
-\r
-typedef int nfds_t;\r
-\r
-struct pollfd\r
-{\r
- int fd;\r
- short events;\r
- short revents;\r
-};\r
-\r
-int poll(struct pollfd fds[], nfds_t nfds, int timeout);\r
-\r
-#endif /* SYS_POLL_H */\r
+#ifndef SYS_POLL_H
+#define SYS_POLL_H
+
+typedef int nfds_t;
+
+struct pollfd
+{
+ int fd;
+ short events;
+ short revents;
+};
+
+int poll(struct pollfd fds[], nfds_t nfds, int timeout);
+
+#endif /* SYS_POLL_H */
-#ifndef SYS_RESOURCE_H\r
-#define SYS_RESOURCE_H\r
-\r
-#define RUSAGE_SELF 0\r
-#define RUSAGE_THREAD 1\r
-\r
-struct rusage\r
-{\r
- struct timeval ru_utime;\r
- struct timeval ru_stime;\r
- int ru_nvcsw;\r
- int ru_minflt;\r
- int ru_majflt;\r
- int ru_nivcsw;\r
-};\r
-\r
-int getrusage(int who, struct rusage *r_usage);\r
-\r
-#endif /* SYS_RESOURCE_H */\r
+#ifndef SYS_RESOURCE_H
+#define SYS_RESOURCE_H
+
+#define RUSAGE_SELF 0
+#define RUSAGE_THREAD 1
+
+struct rusage
+{
+ struct timeval ru_utime;
+ struct timeval ru_stime;
+ int ru_nvcsw;
+ int ru_minflt;
+ int ru_majflt;
+ int ru_nivcsw;
+};
+
+int getrusage(int who, struct rusage *r_usage);
+
+#endif /* SYS_RESOURCE_H */
-#ifndef SYS_SHM_H\r
-#define SYS_SHM_H\r
-\r
-#define IPC_RMID 0x1\r
-#define IPC_CREAT 0x2\r
-#define IPC_PRIVATE 0x4\r
-\r
-typedef int uid_t;\r
-typedef int gid_t;\r
-\r
-typedef int shmatt_t;\r
-typedef int key_t;\r
-\r
-struct ipc_perm\r
-{\r
- uid_t uid; /* owner's user ID */\r
- gid_t gid; /* owner's group ID */\r
- uid_t cuid; /* creator's user ID */\r
- gid_t cgid; /* creator's group ID */\r
- mode_t mode; /* read/write permission */\r
-};\r
-\r
-\r
-struct shmid_ds\r
-{\r
- struct ipc_perm shm_perm; /* operation permission structure */\r
- size_t shm_segsz; /* size of segment in bytes */\r
- pid_t shm_lpid; /* process ID of last shared memory operation */\r
- pid_t shm_cpid; /* process ID of creator */\r
- shmatt_t shm_nattch; /* number of current attaches */\r
- time_t shm_atime; /* time of last shmat() */\r
- time_t shm_dtime; /* time of last shmdt() */\r
- time_t shm_ctime; /* time of last change by shmctl() */\r
-};\r
-\r
-int shmctl(int shmid, int cmd, struct shmid_ds *buf);\r
-int shmget(key_t key, size_t size, int shmflg);\r
-void *shmat(int shmid, const void *shmaddr, int shmflg);\r
-int shmdt(const void *shmaddr);\r
-\r
-#endif /* SYS_SHM_H */\r
+#ifndef SYS_SHM_H
+#define SYS_SHM_H
+
+#define IPC_RMID 0x1
+#define IPC_CREAT 0x2
+#define IPC_PRIVATE 0x4
+
+typedef int uid_t;
+typedef int gid_t;
+
+typedef int shmatt_t;
+typedef int key_t;
+
+struct ipc_perm
+{
+ uid_t uid; /* owner's user ID */
+ gid_t gid; /* owner's group ID */
+ uid_t cuid; /* creator's user ID */
+ gid_t cgid; /* creator's group ID */
+ mode_t mode; /* read/write permission */
+};
+
+
+struct shmid_ds
+{
+ struct ipc_perm shm_perm; /* operation permission structure */
+ size_t shm_segsz; /* size of segment in bytes */
+ pid_t shm_lpid; /* process ID of last shared memory operation */
+ pid_t shm_cpid; /* process ID of creator */
+ shmatt_t shm_nattch; /* number of current attaches */
+ time_t shm_atime; /* time of last shmat() */
+ time_t shm_dtime; /* time of last shmdt() */
+ time_t shm_ctime; /* time of last change by shmctl() */
+};
+
+int shmctl(int shmid, int cmd, struct shmid_ds *buf);
+int shmget(key_t key, size_t size, int shmflg);
+void *shmat(int shmid, const void *shmaddr, int shmflg);
+int shmdt(const void *shmaddr);
+
+#endif /* SYS_SHM_H */
-#ifndef SYS_SOCKET_H\r
-#define SYS_SOCKET_H\r
-\r
-#endif /* SYS_SOCKET_H */\r
+#ifndef SYS_SOCKET_H
+#define SYS_SOCKET_H
+
+#endif /* SYS_SOCKET_H */
-#ifndef SYS_UIO_H\r
-#define SYS_UIO_H\r
-\r
-#include <inttypes.h>\r
-#include <unistd.h>\r
-\r
- struct iovec\r
- {\r
- void *iov_base; /* Base address of a memory region for input or output */\r
- size_t iov_len; /* The size of the memory pointed to by iov_base */\r
-};\r
-\r
- ssize_t readv(int fildes, const struct iovec *iov, int iovcnt);\r
- ssize_t writev(int fildes, const struct iovec *iov, int iovcnt);\r
-\r
-#endif /* SYS_UIO_H */\r
+#ifndef SYS_UIO_H
+#define SYS_UIO_H
+
+#include <inttypes.h>
+#include <unistd.h>
+
+ struct iovec
+ {
+ void *iov_base; /* Base address of a memory region for input or output */
+ size_t iov_len; /* The size of the memory pointed to by iov_base */
+};
+
+ ssize_t readv(int fildes, const struct iovec *iov, int iovcnt);
+ ssize_t writev(int fildes, const struct iovec *iov, int iovcnt);
+
+#endif /* SYS_UIO_H */
-#ifndef SYS_UN_H\r
-#define SYS_UN_H\r
-\r
-typedef int sa_family_t;\r
-typedef int in_port_t;\r
-\r
- struct sockaddr_un\r
- {\r
- sa_family_t sun_family; /* Address family */\r
- char sun_path[]; /* Socket pathname */\r
-};\r
-\r
-#endif /* SYS_UN_H */\r
+#ifndef SYS_UN_H
+#define SYS_UN_H
+
+typedef int sa_family_t;
+typedef int in_port_t;
+
+ struct sockaddr_un
+ {
+ sa_family_t sun_family; /* Address family */
+ char sun_path[]; /* Socket pathname */
+};
+
+#endif /* SYS_UN_H */
-#ifndef SYS_WAIT_H\r
-#define SYS_WAIT_H\r
-\r
-#define WIFSIGNALED(a) 0\r
-#define WIFEXITED(a) 0\r
-#define WTERMSIG(a) 0\r
-#define WEXITSTATUS(a) 0\r
-#define WNOHANG 0\r
-\r
-pid_t waitpid(pid_t, int *stat_loc, int options);\r
-\r
-#endif /* SYS_WAIT_H */\r
+#ifndef SYS_WAIT_H
+#define SYS_WAIT_H
+
+#define WIFSIGNALED(a) 0
+#define WIFEXITED(a) 0
+#define WTERMSIG(a) 0
+#define WEXITSTATUS(a) 0
+#define WNOHANG 0
+
+pid_t waitpid(pid_t, int *stat_loc, int options);
+
+#endif /* SYS_WAIT_H */
-#ifndef SYSLOG_H\r
-#define SYSLOG_H\r
-\r
-int syslog();\r
-\r
-#define LOG_INFO 0x1\r
-#define LOG_ERROR 0x2\r
-#define LOG_WARN 0x4\r
-\r
-#define LOG_NDELAY 0x1\r
-#define LOG_NOWAIT 0x2\r
-#define LOG_PID 0x4\r
-#define LOG_USER 0x8\r
-\r
-void closelog(void);\r
-void openlog(const char *ident, int logopt, int facility);\r
-\r
-#endif /* SYSLOG_H */\r
+#ifndef SYSLOG_H
+#define SYSLOG_H
+
+int syslog();
+
+#define LOG_INFO 0x1
+#define LOG_ERROR 0x2
+#define LOG_WARN 0x4
+
+#define LOG_NDELAY 0x1
+#define LOG_NOWAIT 0x2
+#define LOG_PID 0x4
+#define LOG_USER 0x8
+
+void closelog(void);
+void openlog(const char *ident, int logopt, int facility);
+
+#endif /* SYSLOG_H */