X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fbsd-os.c;h=f8682e265bae78c6720818aee2c5d732be7e59b5;hb=f17e3d27d7ff599f9443d011d17017a2a858c81a;hp=df486eb63ba2a34cbb6aa78405b872843f4f87f8;hpb=cb2be4b6d03412e2e547a8b051e43d5446792b7c;p=sbcl.git diff --git a/src/runtime/bsd-os.c b/src/runtime/bsd-os.c index df486eb..f8682e2 100644 --- a/src/runtime/bsd-os.c +++ b/src/runtime/bsd-os.c @@ -82,7 +82,7 @@ static void openbsd_init(); void os_init(char *argv[], char *envp[]) { - os_vm_page_size = getpagesize(); + os_vm_page_size = BACKEND_PAGE_BYTES; #ifdef __NetBSD__ netbsd_init(); @@ -198,19 +198,9 @@ is_valid_lisp_addr(os_vm_address_t addr) */ void -memory_fault_handler(int signal, siginfo_t *siginfo, os_context_t *context -#if defined(LISP_FEATURE_FREEBSD) && defined(LISP_FEATURE_X86_64) -/* FreeBSD/amd64 stores fault address only in undocumented 4th arg. */ - ,void *fault_addr -#endif - ) +memory_fault_handler(int signal, siginfo_t *siginfo, os_context_t *context) { -#if defined(LISP_FEATURE_FREEBSD) && defined(LISP_FEATURE_X86_64) - /* KLUDGE: Store fault address into si_addr for compatibilities. */ - siginfo->si_addr = fault_addr; -#else void *fault_addr = arch_get_bad_addr(signal, siginfo, context); -#endif #if defined(LISP_FEATURE_RESTORE_TLS_SEGMENT_REGISTER_FROM_CONTEXT) FSHOW_SIGNAL((stderr, "/ TLS: restoring fs: %p in memory_fault_handler\n", @@ -393,7 +383,8 @@ static void freebsd_init() #endif /* LISP_FEATURE_X86 */ } -#if defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_SB_PTHREAD_FUTEX) +#if defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_SB_PTHREAD_FUTEX) \ + && !defined(LISP_FEATURE_SB_LUTEX) int futex_wait(int *lock_word, long oldval, long sec, unsigned long usec) { @@ -437,7 +428,7 @@ futex_wake(int *lock_word, int n) #endif char * -os_get_runtime_executable_path() +os_get_runtime_executable_path(int external) { char path[PATH_MAX + 1]; @@ -465,20 +456,16 @@ os_get_runtime_executable_path() } #elif defined(LISP_FEATURE_NETBSD) || defined(LISP_FEATURE_OPENBSD) char * -os_get_runtime_executable_path() +os_get_runtime_executable_path(int external) { struct stat sb; - char *path = strdup("/proc/curproc/file"); - if (path && ((stat(path, &sb)) == 0)) - return path; - else { - fprintf(stderr, "Couldn't stat /proc/curproc/file; is /proc mounted?\n"); - return NULL; - } + if (!external && stat("/proc/curproc/file", &sb) == 0) + return copied_string("/proc/curproc/file"); + return NULL; } #else /* Not DARWIN or FREEBSD or NETBSD or OPENBSD */ char * -os_get_runtime_executable_path() +os_get_runtime_executable_path(int external) { return NULL; }