X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fwin32-os.h;h=7f5015590c5ffff618a8fbe65d2e8e6d605728d7;hb=bf40ae88bc289fd765a33861cc4bc0853ed483ba;hp=4435b6fd7f3a641b02298cfb40d0e760186258a0;hpb=7fb597b585fc715537ea644f7d84440eca217ca1;p=sbcl.git diff --git a/src/runtime/win32-os.h b/src/runtime/win32-os.h index 4435b6f..7f50155 100644 --- a/src/runtime/win32-os.h +++ b/src/runtime/win32-os.h @@ -9,42 +9,82 @@ * files for more information. */ +#ifndef SBCL_INCLUDED_WIN32_OS_H +#define SBCL_INCLUDED_WIN32_OS_H + +#define WIN32_LEAN_AND_MEAN +#include +#include + #include +#include +#include #include #include #include #include #include -#define WIN32_LEAN_AND_MEAN -#include #include "target-arch-os.h" #include "target-arch.h" +#ifdef LISP_FEATURE_SB_THREAD +#include "pthreads_win32.h" +/* prevent inclusion of a mingw semaphore.h */ +#define CANNOT_USE_POSIX_SEM_T +typedef sem_t os_sem_t; +#else +typedef void *siginfo_t; +#endif + typedef LPVOID os_vm_address_t; -typedef size_t os_vm_size_t; -typedef off_t os_vm_offset_t; +typedef uword_t os_vm_size_t; +typedef intptr_t os_vm_offset_t; typedef int os_vm_prot_t; -typedef void *siginfo_t; - /* These are used as bitfields, but Win32 doesn't work that way, so we do a translation. */ #define OS_VM_PROT_READ 1 #define OS_VM_PROT_WRITE 2 #define OS_VM_PROT_EXECUTE 4 +#define os_open_core(file,mode) win32_open_for_mmap(file) +#define HAVE_os_open_core + +#define os_fopen_runtime(file,mode) win32_fopen_runtime() +#define HAVE_os_fopen_runtime + +extern int os_number_of_processors; +#define HAVE_os_number_of_processors + +extern int win32_open_for_mmap(const char* file); +extern FILE* win32_fopen_runtime(); + +#define OUR_TLS_INDEX 63 #define SIG_MEMORY_FAULT SIGSEGV -#define SIG_INTERRUPT_THREAD (SIGRTMIN) #define SIG_STOP_FOR_GC (SIGRTMIN+1) #define SIG_DEQUEUE (SIGRTMIN+2) #define SIG_THREAD_EXIT (SIGRTMIN+3) +#define FPU_STATE_SIZE 27 + struct lisp_exception_frame { struct lisp_exception_frame *next_frame; void *handler; - CONTEXT context; - EXCEPTION_RECORD exception; + lispobj *bindstack_pointer; }; void wos_install_interrupt_handlers(struct lisp_exception_frame *handler); +char *dirname(char *path); + +void os_invalidate_free(os_vm_address_t addr, os_vm_size_t len); + +boolean win32_maybe_interrupt_io(void* thread); + +#define bcopy(src,dest,n) memmove(dest,src,n) + +struct thread; +void** os_get_csp(struct thread* th); + + +#endif /* SBCL_INCLUDED_WIN32_OS_H */