--- Gnu-Mach/linux/dev/glue/misc.c 2020/09/02 04:41:39 1.1 +++ Gnu-Mach/linux/dev/glue/misc.c 2020/09/02 04:45:59 1.1.1.3 @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -66,10 +67,7 @@ #include #include #include - -extern boolean_t vm_map_lookup_entry (register vm_map_t, register vm_offset_t, - vm_map_entry_t *); -extern int printf (const char *, ...); +#include int (*dispatch_scsi_info_ptr) (int ino, char *buffer, char **start, off_t offset, int length, int inout) = 0; @@ -84,34 +82,34 @@ linux_to_mach_error (int err) case 0: return D_SUCCESS; - case -LINUX_EPERM: + case -EPERM: return D_INVALID_OPERATION; - case -LINUX_EIO: + case -EIO: return D_IO_ERROR; - case -LINUX_ENXIO: + case -ENXIO: return D_NO_SUCH_DEVICE; - case -LINUX_EACCES: + case -EACCES: return D_INVALID_OPERATION; - case -LINUX_EFAULT: + case -EFAULT: return D_INVALID_SIZE; - case -LINUX_EBUSY: + case -EBUSY: return D_ALREADY_OPEN; - case -LINUX_EINVAL: + case -EINVAL: return D_INVALID_SIZE; - case -LINUX_EROFS: + case -EROFS: return D_READ_ONLY; - case -LINUX_EWOULDBLOCK: + case -EWOULDBLOCK: return D_WOULD_BLOCK; - case -LINUX_ENOMEM: + case -ENOMEM: return D_NO_MEMORY; default: @@ -123,6 +121,8 @@ linux_to_mach_error (int err) int issig () { + if (!current_thread()) + return 0; return current_thread ()->wait_result != THREAD_AWAKENED; } @@ -148,7 +148,7 @@ verify_area (int rw, const void *p, unsi || (entry->protection & prot) != prot) { vm_map_unlock_read (current_map ()); - return -LINUX_EFAULT; + return -EFAULT; } if (entry->vme_end - entry->vme_start >= len) break; @@ -204,113 +204,6 @@ set_device_ro (kdev_t dev, int flag) ro_bits[major][minor >> 5] &= ~(1 << (minor & 31)); } -/* - * linux/lib/string.c - * - * Copyright (C) 1991, 1992 Linus Torvalds - */ - -/* - * stupid library routines.. The optimized versions should generally be found - * as inline code in - * - * These are buggy as well.. - */ - -#include -#include - -char *___strtok = NULL; - -#ifndef __HAVE_ARCH_STRSPN -size_t -strspn (const char *s, const char *accept) -{ - const char *p; - const char *a; - size_t count = 0; - - for (p = s; *p != '\0'; ++p) - { - for (a = accept; *a != '\0'; ++a) - { - if (*p == *a) - break; - } - if (*a == '\0') - return count; - ++count; - } - - return count; -} -#endif - -#ifndef __HAVE_ARCH_STRPBRK -char * -strpbrk (const char *cs, const char *ct) -{ - const char *sc1, *sc2; - - for (sc1 = cs; *sc1 != '\0'; ++sc1) - { - for (sc2 = ct; *sc2 != '\0'; ++sc2) - { - if (*sc1 == *sc2) - return (char *) sc1; - } - } - return NULL; -} -#endif - -#ifndef __HAVE_ARCH_STRTOK -char * -strtok (char *s, const char *ct) -{ - char *sbegin, *send; - - sbegin = s ? s : ___strtok; - if (!sbegin) - { - return NULL; - } - sbegin += strspn (sbegin, ct); - if (*sbegin == '\0') - { - ___strtok = NULL; - return (NULL); - } - send = strpbrk (sbegin, ct); - if (send && *send != '\0') - *send++ = '\0'; - ___strtok = send; - return (sbegin); -} -#endif - - -#ifndef __HAVE_ARCH_STRSTR -char * -strstr (const char *s1, const char *s2) -{ - int l1, l2; - - l2 = strlen (s2); - if (! l2) - return (char *) s1; - l1 = strlen (s1); - while (l1 >= l2) - { - l1--; - if (! memcmp (s1,s2,l2)) - return (char *) s1; - s1++; - } - return NULL; -} -#endif - struct proc_dir_entry proc_scsi; struct inode_operations proc_scsi_inode_operations; struct proc_dir_entry proc_net; @@ -336,7 +229,12 @@ add_blkdev_randomness (int major) void do_gettimeofday (struct timeval *tv) { - host_get_time (1, tv); + /* + * XXX: The first argument should be mach_host_self (), but that's too + * expensive, and the host argument is not used by host_get_time (), + * only checked not to be HOST_NULL. + */ + host_get_time ((host_t) 1, (time_value_t *) tv); } int