Add :application-type parameter for save-lisp-and-die on Windows.
[sbcl.git] / src / runtime / win32-os.h
index 4435b6f..7f50155 100644 (file)
@@ -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 <windows.h>
+#include <winsock2.h>
+
 #include <stdlib.h>
+#include <stdint.h>
+#include <stdio.h>
 #include <sys/types.h>
 #include <string.h>
 #include <sys/time.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
 #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 */