Merge branch 'master' of git://factorcode.org/git/factor
commit
bc8d7e7cd0
|
@ -0,0 +1,30 @@
|
||||||
|
USING: kernel alien.syntax math ;
|
||||||
|
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
! FreeBSD 8.0-CURRENT
|
||||||
|
|
||||||
|
C-STRUCT: stat
|
||||||
|
{ "__dev_t" "st_dev" }
|
||||||
|
{ "ino_t" "st_ino" }
|
||||||
|
{ "mode_t" "st_mode" }
|
||||||
|
{ "nlink_t" "st_nlink" }
|
||||||
|
{ "uid_t" "st_uid" }
|
||||||
|
{ "gid_t" "st_gid" }
|
||||||
|
{ "__dev_t" "st_rdev" }
|
||||||
|
{ "timespec" "st_atim" }
|
||||||
|
{ "timespec" "st_mtim" }
|
||||||
|
{ "timespec" "st_ctim" }
|
||||||
|
{ "off_t" "st_size" }
|
||||||
|
{ "blkcnt_t" "st_blocks" }
|
||||||
|
{ "blksize_t" "st_blksize" }
|
||||||
|
{ "fflags_t" "st_flags" }
|
||||||
|
{ "__uint32_t" "st_gen" }
|
||||||
|
{ "__int32_t" "st_lspare" }
|
||||||
|
{ "timespec" "st_birthtimespec" }
|
||||||
|
! not sure about the padding here.
|
||||||
|
{ "__uint32_t" "pad0" }
|
||||||
|
{ "__uint32_t" "pad1" } ;
|
||||||
|
|
||||||
|
FUNCTION: int stat ( char* pathname, stat* buf ) ;
|
||||||
|
FUNCTION: int lstat ( char* pathname, stat* buf ) ;
|
|
@ -0,0 +1,30 @@
|
||||||
|
USING: kernel alien.syntax math ;
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
! FreeBSD 8.0-CURRENT
|
||||||
|
! untested
|
||||||
|
|
||||||
|
C-STRUCT: stat
|
||||||
|
{ "__dev_t" "st_dev" }
|
||||||
|
{ "ino_t" "st_ino" }
|
||||||
|
{ "mode_t" "st_mode" }
|
||||||
|
{ "nlink_t" "st_nlink" }
|
||||||
|
{ "uid_t" "st_uid" }
|
||||||
|
{ "gid_t" "st_gid" }
|
||||||
|
{ "__dev_t" "st_rdev" }
|
||||||
|
{ "timespec" "st_atim" }
|
||||||
|
{ "timespec" "st_mtim" }
|
||||||
|
{ "timespec" "st_ctim" }
|
||||||
|
{ "off_t" "st_size" }
|
||||||
|
{ "blkcnt_t" "st_blocks" }
|
||||||
|
{ "blksize_t" "st_blksize" }
|
||||||
|
{ "fflags_t" "st_flags" }
|
||||||
|
{ "__uint32_t" "st_gen" }
|
||||||
|
{ "__int32_t" "st_lspare" }
|
||||||
|
{ "timespec" "st_birthtimespec" }
|
||||||
|
! not sure about the padding here.
|
||||||
|
{ "__uint32_t" "pad0" }
|
||||||
|
{ "__uint32_t" "pad1" } ;
|
||||||
|
|
||||||
|
FUNCTION: int stat ( char* pathname, stat* buf ) ;
|
||||||
|
FUNCTION: int lstat ( char* pathname, stat* buf ) ;
|
|
@ -1,30 +1,7 @@
|
||||||
USING: kernel alien.syntax math ;
|
USING: layouts combinators vocabs.loader ;
|
||||||
|
|
||||||
IN: unix.stat
|
IN: unix.stat
|
||||||
|
|
||||||
! FreeBSD 8.0-CURRENT
|
cell-bits {
|
||||||
|
{ 32 [ "unix.stat.freebsd.32" require ] }
|
||||||
C-STRUCT: stat
|
{ 64 [ "unix.stat.freebsd.64" require ] }
|
||||||
{ "__dev_t" "st_dev" }
|
} case
|
||||||
{ "ino_t" "st_ino" }
|
|
||||||
{ "mode_t" "st_mode" }
|
|
||||||
{ "nlink_t" "st_nlink" }
|
|
||||||
{ "uid_t" "st_uid" }
|
|
||||||
{ "gid_t" "st_gid" }
|
|
||||||
{ "__dev_t" "st_rdev" }
|
|
||||||
{ "timespec" "st_atim" }
|
|
||||||
{ "timespec" "st_mtim" }
|
|
||||||
{ "timespec" "st_ctim" }
|
|
||||||
{ "off_t" "st_size" }
|
|
||||||
{ "blkcnt_t" "st_blocks" }
|
|
||||||
{ "blksize_t" "st_blksize" }
|
|
||||||
{ "fflags_t" "st_flags" }
|
|
||||||
{ "__uint32_t" "st_gen" }
|
|
||||||
{ "__int32_t" "st_lspare" }
|
|
||||||
{ "timespec" "st_birthtimespec" }
|
|
||||||
! not sure about the padding here.
|
|
||||||
{ "__uint32_t" "pad0" }
|
|
||||||
{ "__uint32_t" "pad1" } ;
|
|
||||||
|
|
||||||
FUNCTION: int stat ( char* pathname, stat* buf ) ;
|
|
||||||
FUNCTION: int lstat ( char* pathname, stat* buf ) ;
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
USING: kernel alien.syntax math ;
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
! OpenBSD 4.2
|
||||||
|
|
||||||
|
C-STRUCT: stat
|
||||||
|
{ "dev_t" "st_dev" }
|
||||||
|
{ "ino_t" "st_ino" }
|
||||||
|
{ "mode_t" "st_mode" }
|
||||||
|
{ "nlink_t" "st_nlink" }
|
||||||
|
{ "uid_t" "st_uid" }
|
||||||
|
{ "gid_t" "st_gid" }
|
||||||
|
{ "dev_t" "st_rdev" }
|
||||||
|
{ "int32_t" "st_lspare0" }
|
||||||
|
{ "timespec*" "st_atimespec" }
|
||||||
|
{ "timespec*" "st_mtimespec" }
|
||||||
|
{ "timespec*" "st_ctimespec" }
|
||||||
|
{ "off_t" "st_size" }
|
||||||
|
{ "int64_t" "st_blocks" }
|
||||||
|
{ "u_int32_t" "st_blksize" }
|
||||||
|
{ "u_int32_t" "st_flags" }
|
||||||
|
{ "u_int32_t" "st_gen" }
|
||||||
|
{ "int32_t" "st_lspare1" }
|
||||||
|
{ "timespec*" "st_birthtimespec" }
|
||||||
|
{ "int64_t" "st_qspare1" }
|
||||||
|
{ "int64_t" "st_qspare2" } ;
|
||||||
|
|
||||||
|
! FUNCTION: int stat ( char* pathname, stat* buf ) ;
|
||||||
|
FUNCTION: int lstat ( char* pathname, stat* buf ) ;
|
|
@ -0,0 +1,29 @@
|
||||||
|
USING: kernel alien.syntax math ;
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
! OpenBSD 4.2
|
||||||
|
|
||||||
|
C-STRUCT: stat
|
||||||
|
{ "dev_t" "st_dev" }
|
||||||
|
{ "ino_t" "st_ino" }
|
||||||
|
{ "mode_t" "st_mode" }
|
||||||
|
{ "nlink_t" "st_nlink" }
|
||||||
|
{ "uid_t" "st_uid" }
|
||||||
|
{ "gid_t" "st_gid" }
|
||||||
|
{ "dev_t" "st_rdev" }
|
||||||
|
{ "int32_t" "st_lspare0" }
|
||||||
|
{ "timespec*" "st_atimespec" }
|
||||||
|
{ "timespec*" "st_mtimespec" }
|
||||||
|
{ "timespec*" "st_ctimespec" }
|
||||||
|
{ "off_t" "st_size" }
|
||||||
|
{ "int64_t" "st_blocks" }
|
||||||
|
{ "u_int32_t" "st_blksize" }
|
||||||
|
{ "u_int32_t" "st_flags" }
|
||||||
|
{ "u_int32_t" "st_gen" }
|
||||||
|
{ "int32_t" "st_lspare1" }
|
||||||
|
{ "timespec*" "st_birthtimespec" }
|
||||||
|
{ "int64_t" "st_qspare1" }
|
||||||
|
{ "int64_t" "st_qspare2" } ;
|
||||||
|
|
||||||
|
! FUNCTION: int stat ( char* pathname, stat* buf ) ;
|
||||||
|
FUNCTION: int lstat ( char* pathname, stat* buf ) ;
|
|
@ -0,0 +1,7 @@
|
||||||
|
USING: layouts combinators vocabs.loader ;
|
||||||
|
IN: unix.stat
|
||||||
|
|
||||||
|
cell-bits {
|
||||||
|
{ 32 [ "unix.stat.openbsd.32" require ] }
|
||||||
|
{ 64 [ "unix.stat.openbsd.64" require ] }
|
||||||
|
} case
|
|
@ -0,0 +1,29 @@
|
||||||
|
USING: alien.syntax ;
|
||||||
|
IN: unix.types
|
||||||
|
|
||||||
|
! OpenBSD 4.2
|
||||||
|
|
||||||
|
TYPEDEF: ushort __uint16_t
|
||||||
|
TYPEDEF: uint __uint32_t
|
||||||
|
TYPEDEF: int __int32_t
|
||||||
|
TYPEDEF: longlong __int64_t
|
||||||
|
|
||||||
|
TYPEDEF: int int32_t
|
||||||
|
TYPEDEF: int u_int32_t
|
||||||
|
TYPEDEF: longlong int64_t
|
||||||
|
TYPEDEF: ulonglong u_int64_t
|
||||||
|
|
||||||
|
TYPEDEF: __uint32_t __dev_t
|
||||||
|
TYPEDEF: __uint32_t dev_t
|
||||||
|
TYPEDEF: __uint32_t ino_t
|
||||||
|
TYPEDEF: __uint16_t mode_t
|
||||||
|
TYPEDEF: __uint16_t nlink_t
|
||||||
|
TYPEDEF: __uint32_t uid_t
|
||||||
|
TYPEDEF: __uint32_t gid_t
|
||||||
|
TYPEDEF: __int64_t off_t
|
||||||
|
TYPEDEF: __int64_t blkcnt_t
|
||||||
|
TYPEDEF: __uint32_t blksize_t
|
||||||
|
TYPEDEF: __uint32_t fflags_t
|
||||||
|
TYPEDEF: int ssize_t
|
||||||
|
TYPEDEF: int pid_t
|
||||||
|
TYPEDEF: int time_t
|
|
@ -10,6 +10,8 @@ os
|
||||||
{ "linux" [ "unix.types.linux" require ] }
|
{ "linux" [ "unix.types.linux" require ] }
|
||||||
{ "macosx" [ "unix.types.macosx" require ] }
|
{ "macosx" [ "unix.types.macosx" require ] }
|
||||||
{ "freebsd" [ "unix.types.freebsd" require ] }
|
{ "freebsd" [ "unix.types.freebsd" require ] }
|
||||||
|
{ "openbsd" [ "unix.types.openbsd" require ] }
|
||||||
|
{ "netbsd" [ "unix.types.netbsd" require ] }
|
||||||
[ drop ]
|
[ drop ]
|
||||||
}
|
}
|
||||||
case
|
case
|
||||||
|
|
|
@ -0,0 +1,139 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
#define BSD
|
||||||
|
#define FREEBSD
|
||||||
|
#define UNIX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__NetBSD__)
|
||||||
|
#define BSD
|
||||||
|
#define NETBSD
|
||||||
|
#define UNIX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__OpenBSD__)
|
||||||
|
#define BSD
|
||||||
|
#define OPENBSD
|
||||||
|
#define UNIX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(linux)
|
||||||
|
#define LINUX
|
||||||
|
#define UNIX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__amd64__) || defined(__x86_64__)
|
||||||
|
#define BIT64
|
||||||
|
#else
|
||||||
|
#define BIT32
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(UNIX)
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define BL printf(" ");
|
||||||
|
#define QUOT printf("\"");
|
||||||
|
#define NL printf("\n");
|
||||||
|
#define LB printf("{"); BL
|
||||||
|
#define RB BL printf("}");
|
||||||
|
#define SEMI printf(";");
|
||||||
|
#define grovel(t) printf("TYPEDEF: "); printf("%d", sizeof(t)); BL printf(#t); NL
|
||||||
|
#define grovel2impl(t,n) BL BL BL BL LB QUOT printf(#t); QUOT BL QUOT printf((n)); QUOT RB
|
||||||
|
#define grovel2(t,n) grovel2impl(t,n) NL
|
||||||
|
#define grovel2end(t,n) grovel2impl(t,n) BL SEMI NL
|
||||||
|
#define header(os) printf("vvv %s vvv", (os)); NL
|
||||||
|
#define footer(os) printf("^^^ %s ^^^", (os)); NL
|
||||||
|
#define header2(os,struct) printf("vvv %s %s vvv", (os), (struct)); NL
|
||||||
|
#define footer2(os,struct) printf("^^^ %s %s ^^^", (os), (struct)); NL
|
||||||
|
#define struct(n) printf("C-STRUCT: %s\n", (n));
|
||||||
|
|
||||||
|
void openbsd_types()
|
||||||
|
{
|
||||||
|
header2("openbsd", "types");
|
||||||
|
grovel(dev_t);
|
||||||
|
grovel(gid_t);
|
||||||
|
grovel(ino_t);
|
||||||
|
grovel(int32_t);
|
||||||
|
grovel(int64_t);
|
||||||
|
grovel(mode_t);
|
||||||
|
grovel(nlink_t);
|
||||||
|
grovel(off_t);
|
||||||
|
grovel(struct timespec);
|
||||||
|
grovel(uid_t);
|
||||||
|
footer2("openbsd", "types");
|
||||||
|
}
|
||||||
|
|
||||||
|
void openbsd_stat()
|
||||||
|
{
|
||||||
|
header2("openbsd", "stat");
|
||||||
|
struct("stat");
|
||||||
|
grovel2(dev_t, "st_dev");
|
||||||
|
grovel2(ino_t, "st_ino");
|
||||||
|
grovel2(mode_t, "st_mode");
|
||||||
|
grovel2(nlink_t, "st_nlink");
|
||||||
|
grovel2(uid_t, "st_uid");
|
||||||
|
grovel2(gid_t, "st_gid");
|
||||||
|
grovel2(dev_t, "st_rdev");
|
||||||
|
grovel2(int32_t, "st_lspare0");
|
||||||
|
grovel2(struct timespec, "st_atimespec");
|
||||||
|
grovel2(struct timespec, "st_mtimespec");
|
||||||
|
grovel2(struct timespec, "st_ctimespec");
|
||||||
|
grovel2(off_t, "st_size");
|
||||||
|
grovel2(int64_t, "st_blocks");
|
||||||
|
grovel2(u_int32_t, "st_blksize");
|
||||||
|
grovel2(u_int32_t, "st_flags");
|
||||||
|
grovel2(u_int32_t, "st_gen");
|
||||||
|
grovel2(int32_t, "st_lspare1");
|
||||||
|
grovel2(struct timespec, "st_birthtimespec");
|
||||||
|
grovel2(int64_t, "st_qspare1");
|
||||||
|
grovel2end(int64_t, "st_qspare2");
|
||||||
|
footer2("openbsd", "stat");
|
||||||
|
}
|
||||||
|
|
||||||
|
void unix_types()
|
||||||
|
{
|
||||||
|
grovel(dev_t);
|
||||||
|
grovel(gid_t);
|
||||||
|
grovel(ino_t);
|
||||||
|
grovel(int32_t);
|
||||||
|
grovel(int64_t);
|
||||||
|
grovel(mode_t);
|
||||||
|
grovel(nlink_t);
|
||||||
|
grovel(off_t);
|
||||||
|
grovel(struct timespec);
|
||||||
|
grovel(struct stat);
|
||||||
|
grovel(time_t);
|
||||||
|
grovel(uid_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
//grovel(char);
|
||||||
|
//grovel(int);
|
||||||
|
//grovel(uint);
|
||||||
|
//grovel(long);
|
||||||
|
//grovel(ulong);
|
||||||
|
//grovel(long long);
|
||||||
|
//grovel(unsigned long long);
|
||||||
|
//grovel(void*);
|
||||||
|
//grovel(char*);
|
||||||
|
|
||||||
|
#ifdef FREEBSD
|
||||||
|
grovel(blkcnt_t);
|
||||||
|
grovel(blksize_t);
|
||||||
|
grovel(fflags_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef OPENBSD
|
||||||
|
openbsd_stat();
|
||||||
|
openbsd_types();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNIX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
include vm/Config.unix
|
include vm/Config.unix
|
||||||
PLAF_DLL_OBJS += vm/os-genunix.o vm/os-openbsd.o
|
PLAF_DLL_OBJS += vm/os-genunix.o vm/os-openbsd.o
|
||||||
|
CC = egcc
|
||||||
CFLAGS += -export-dynamic
|
CFLAGS += -export-dynamic
|
||||||
LIBS = -L/usr/local/lib/ -lm $(X11_UI_LIBS)
|
LIBS = -L/usr/local/lib/ -lm $(X11_UI_LIBS)
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
|
#include <i386/signal.h>
|
||||||
|
|
||||||
INLINE void *openbsd_stack_pointer(void *uap)
|
INLINE void *openbsd_stack_pointer(void *uap)
|
||||||
{
|
{
|
||||||
ucontext_t *ucontext = (ucontext_t *)uap;
|
struct sigcontext *sc = (struct sigcontext*) uap;
|
||||||
return (void *)ucontext->sc_esp;
|
return (void *)sc->sc_esp;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ucontext_stack_pointer openbsd_stack_pointer
|
#define ucontext_stack_pointer openbsd_stack_pointer
|
||||||
|
#define UAP_PROGRAM_COUNTER(uap) (((struct sigcontext*)(uap))->sc_eip)
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
#define UNKNOWN_TYPE_P(file) ((file)->d_type == DT_UNKNOWN)
|
#define UNKNOWN_TYPE_P(file) ((file)->d_type == DT_UNKNOWN)
|
||||||
#define DIRECTORY_P(file) ((file)->d_type == DT_DIR)
|
#define DIRECTORY_P(file) ((file)->d_type == DT_DIR)
|
||||||
|
|
||||||
|
#ifndef environ
|
||||||
|
extern char **environ;
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue