// godefs -gsyscall -f-m32 -f-I/home/rsc/pub/nacl/native_client/src/third_party/nacl_sdk/linux/sdk/nacl-sdk/nacl/include -f-I/home/rsc/pub/nacl/native_client types_nacl.c

// MACHINE GENERATED - DO NOT EDIT.

package syscall

// Constants
const (
	sizeofPtr	= 0x4;
	sizeofShort	= 0x2;
	sizeofInt	= 0x4;
	sizeofLong	= 0x4;
	sizeofLongLong	= 0x8;
	PROT_READ	= 0x1;
	PROT_WRITE	= 0x2;
	MAP_SHARED	= 0x1;
	SYS_FORK	= 0;
	SYS_PTRACE	= 0;
	SYS_CHDIR	= 0;
	SYS_DUP2	= 0;
	SYS_FCNTL	= 0;
	SYS_EXECVE	= 0;
	O_RDONLY	= 0;
	O_WRONLY	= 0x1;
	O_RDWR		= 0x2;
	O_APPEND	= 0x400;
	O_ASYNC		= 0x2000;
	O_CREAT		= 0x40;
	O_NOCTTY	= 0;
	O_NONBLOCK	= 0x800;
	O_SYNC		= 0x1000;
	O_TRUNC		= 0x200;
	O_CLOEXEC	= 0;
	F_GETFD		= 0x1;
	F_SETFD		= 0x2;
	F_GETFL		= 0x3;
	F_SETFL		= 0x4;
	FD_CLOEXEC	= 0;
	S_IFMT		= 0x1f000;
	S_IFIFO		= 0x1000;
	S_IFCHR		= 0x2000;
	S_IFDIR		= 0x4000;
	S_IFBLK		= 0x6000;
	S_IFREG		= 0x8000;
	S_IFLNK		= 0xa000;
	S_IFSOCK	= 0xc000;
	S_ISUID		= 0x800;
	S_ISGID		= 0x400;
	S_ISVTX		= 0x200;
	S_IRUSR		= 0x100;
	S_IWUSR		= 0x80;
	S_IXUSR		= 0x40;
)

// Types

type _C_short int16

type _C_int int32

type _C_long int32

type _C_long_long int64

type _C_off_t int32

type Timespec struct {
	Sec	int32;
	Nsec	int32;
}

type Timeval struct {
	Sec	int32;
	Usec	int32;
}

type Time_t int32

type _Gid_t uint32

type Stat_t struct {
	Dev		int64;
	Ino		uint32;
	Mode		uint32;
	Nlink		uint32;
	Uid		uint32;
	Gid		uint32;
	__padding	int32;
	Rdev		int64;
	Size		int32;
	Blksize		int32;
	Blocks		int32;
	Atime		int32;
	Mtime		int32;
	Ctime		int32;
}

type Dirent struct {
	Ino	uint32;
	Off	int32;
	Reclen	uint16;
	Name	[256]int8;
	Pad0	[2]byte;
}
