ntdll: Add more checks for DragonFly BSD

André Hentschel nerv at dawncrow.de
Mon May 28 12:20:37 CDT 2012


directory.c needs more work, but i send the easier things first. maybe directory related problems needs to be fixed on the OS site, not sure yet.
---
 dlls/ntdll/directory.c   |   11 +++++++++--
 dlls/ntdll/file.c        |    4 ++--
 dlls/ntdll/nt.c          |    2 +-
 dlls/ntdll/server.c      |    2 ++
 dlls/ntdll/signal_i386.c |    2 +-
 5 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index 65c8b8f..1b60fbe 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -320,6 +320,13 @@ static char *get_default_com_device( int num )
         strcpy( ret, "/dev/cuad0" );
         ret[strlen(ret) - 1] = '0' + num - 1;
     }
+#elif defined(__DragonFly__)
+    ret = RtlAllocateHeap( GetProcessHeap(), 0, sizeof("/dev/cuaa0") );
+    if (ret)
+    {
+        strcpy( ret, "/dev/cuaa0" );
+        ret[strlen(ret) - 1] = '0' + num - 1;
+    }
 #else
     FIXME( "no known default for device com%d\n", num );
 #endif
@@ -486,7 +493,7 @@ static char *parse_mount_entries( FILE *f, dev_t dev, ino_t ino )
 }
 #endif
 
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
 #include <fstab.h>
 static char *parse_mount_entries( FILE *f, dev_t dev, ino_t ino )
 {
@@ -587,7 +594,7 @@ static char *get_default_drive_device( const char *root )
     }
     RtlLeaveCriticalSection( &dir_section );
 
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__ )
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__ ) || defined(__DragonFly__)
     char *device = NULL;
     int fd, res = -1;
     struct stat st;
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 8e48602..e54b42a 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -2267,7 +2267,7 @@ NTSTATUS WINAPI NtQueryAttributesFile( const OBJECT_ATTRIBUTES *attr, FILE_BASIC
 }
 
 
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
 /* helper for FILE_GetDeviceInfo to hide some platform differences in fstatfs */
 static inline void get_device_info_fstatfs( FILE_FS_DEVICE_INFORMATION *info, const char *fstypename,
                                             unsigned int flags )
@@ -2388,7 +2388,7 @@ static NTSTATUS get_device_info( int fd, FILE_FS_DEVICE_INFORMATION *info )
             info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
             break;
         }
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__APPLE__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__)
         struct statfs stfs;
 
         if (fstatfs( fd, &stfs ) < 0)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 3ed8038..b90672b 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -1159,7 +1159,7 @@ void fill_cpu_info(void)
             fclose(f);
         }
     }
-#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
+#elif defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__DragonFly__)
     {
         int ret, num;
         size_t len;
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 8a01d22..392668d 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -955,6 +955,8 @@ static int get_unix_tid(void)
     long lwpid;
     thr_self( &lwpid );
     ret = lwpid;
+#elif defined(__DragonFly__)
+    ret = lwp_gettid();
 #endif
     return ret;
 }
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 3b07e77..4a83a70 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -420,7 +420,7 @@ extern void DECLSPEC_NORETURN __wine_restore_regs( const CONTEXT *context );
 enum i386_trap_code
 {
     TRAP_x86_UNKNOWN    = -1,  /* Unknown fault (TRAP_sig not defined) */
-#if defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__)
+#if defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
     TRAP_x86_DIVIDE     = T_DIVIDE,     /* Division by zero exception */
     TRAP_x86_TRCTRAP    = T_TRCTRAP,    /* Single-step exception */
     TRAP_x86_NMI        = T_NMI,        /* NMI interrupt */
-- 

Best Regards, André Hentschel


More information about the wine-patches mailing list