]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Move abort() into opr
authorSimon Wilkinson <sxw@your-file-system.com>
Sun, 11 Sep 2011 20:44:23 +0000 (21:44 +0100)
committerDerrick Brashear <shadow@dementix.org>
Mon, 26 Sep 2011 04:09:54 +0000 (21:09 -0700)
We need our own abort function, because the behaviour of the Windows
abort() implementation isn't sufficiently flexible for us.
Because we're replacing an operating system function, reather than
implementing a missing function, this doesn't belong in roken.

So, provide an alternative opr_abort() implementation in our portable
runtime layer, which is a synonym for abort() on Unix, and implements
the required DebugBreak() functionality on Windows.

Remove lwp_abort() which was just creating another, unnecessary, layer
of abstraction.

Change-Id: Ice226d70d2791beaba011f42e39fde60242f6cc3
Reviewed-on: http://gerrit.openafs.org/4428
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
16 files changed:
src/WINNT/client_exp/NTMakefile
src/lwp/iomgr.c
src/lwp/lwp.h
src/lwp/lwp_nt.c
src/opr/Makefile.in
src/opr/NTMakefile
src/opr/assert.c [new file with mode: 0644]
src/opr/opr.h
src/rx/rx_user.c
src/rx/test/NTMakefile
src/rx/test/testclient.c
src/rx/test/testserver.c
src/rxdebug/NTMakefile
src/util/afsutil.h
src/util/assert.c
src/xstat/NTMakefile

index e7c9830cdf1a262ba13fbf2c28dd2e53f9d5bfdb..31f33bea0bb931151cc38355b5020eab499c2d2a 100644 (file)
@@ -84,6 +84,7 @@ DLLLIBS =\
        $(DESTDIR)\lib\afs\TaLocaleU.lib \
        $(DESTDIR)\lib\afs\mtafsutil.lib \
         $(DESTDIR)\lib\afsroken.lib \
+       $(DESTDIR)\lib\opr.lib \
         $(DESTDIR)\lib\libafsconf.lib
 
 $(DLLFILE): $(DLLOBJS) $(DLLLIBS)
index b0148ea44195756639016665d33ccb8420f8fb60..2ed325a6d8c4ab9b4437592af3b776a308901476 100644 (file)
 
 #include <roken.h>
 
-#ifdef AFS_NT40_ENV
-extern void lwp_abort(void);
-#endif /* AFS_NT40_ENV */
-
 #ifdef HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
 
+#include <afs/opr.h>
+
 #include "lwp.h"
 #include "timer.h"
 
@@ -552,7 +550,7 @@ static void *IOMGR(void *dummy)
                  }
 #endif
                  iomgr_errno = errno;
-                 lwp_abort();
+                 opr_abort();
               }
            }
 
@@ -834,7 +832,7 @@ int IOMGR_Select(int fds, fd_set *readfds, fd_set *writefds,
        fprintf(stderr, "IOMGR_Select: fds=%d, more than max %d\n",
                fds, FD_SETSIZE);
        fflush(stderr);
-       lwp_abort();
+       opr_abort();
     }
 #endif
 
index a94209e882ee98d9b2d4288c715c2e7b08d3773f..3b58c59178b504f2404c919d60da298fe42a99d2 100644 (file)
@@ -72,9 +72,6 @@ extern unsigned int FT_ApproxTime(void);
 #define LWP_ENOROCKS   -15     /* all rocks are in use */
 #define LWP_EBADROCK   -16     /* the specified rock does not exist */
 
-#ifndef AFS_NT40_ENV
-#define lwp_abort() abort()
-#endif
 /* Maximum priority permissible (minimum is always 0) */
 #define LWP_MAX_PRIORITY 4     /* changed from 1 */
 
index 147a91a2bd826fa00d14a2b92bd24b29d980f7f0..c37baebda415dfe46b925eb3f5644130e32b6517 100644 (file)
@@ -22,6 +22,7 @@
 #include <roken.h>
 
 #ifdef AFS_NT40_ENV
+#include <afs/opr.h>
 #include <afs/afsutil.h>
 #include "lwp.h"
 
@@ -54,7 +55,6 @@ char lwp_debug = 0;
 
 /* Forward declarations */
 static void Dispatcher(void);
-static void Exit_LWP(void);
 static void Abort_LWP(char *msg);
 static VOID WINAPI Enter_LWP(PVOID fiberData);
 static void Initialize_PCB(PROCESS pcb, int priority, int stacksize,
@@ -519,7 +519,7 @@ static void Abort_LWP(char *msg)
     printf("***LWP: Abort --- dumping PCBs ...\n");
     Dump_Processes();
 #endif
-    Exit_LWP();
+    opr_abort();
 }
 
 #ifdef DEBUG
@@ -606,17 +606,6 @@ static void Dispatcher(void)
     SwitchToFiber(lwp_cpptr->fiber);
 }
 
-void lwp_abort(void)
-{
-    afs_NTAbort();
-}
-
-static void Exit_LWP(void)
-{
-
-    lwp_abort();
-}
-
 static void Delete_PCB(PROCESS pid)
 {
     Debug(4, ("Entered Delete_PCB"))
index d339cfc031cb0347cd1e9935a4d99bbf480442f3..566cdbe829caa931cc577bf0df7419455ca4f4d6 100644 (file)
@@ -2,9 +2,10 @@ srcdir=@srcdir@
 include @TOP_OBJDIR@/src/config/Makefile.config
 include @TOP_OBJDIR@/src/config/Makefile.pthread
 
-objects = casestrcpy.o
+objects = assert.o casestrcpy.o
 
-all: $(TOP_INCDIR)/afs/opr.h $(TOP_LIBDIR)/libopr.a
+all: $(TOP_INCDIR)/afs/opr.h \
+     $(TOP_LIBDIR)/libopr.a
 
 libopr.a: $(objects)
        -$(RM) -f $@
index 6784827e40a66b9bd1a3863e14de4b3c4d3fe1d8..a10ee520d30a176597934914dd2890ec82970b25 100644 (file)
@@ -16,6 +16,7 @@ INCFILES = \
 LIBFILE = $(DESTDIR)\lib\opr.lib
 
 LIBOBJS = \
+       $(OUT)\assert.obj \
        $(OUT)\casestrcpy.obj \
        $(OUT)\AFS_component_version_number.obj
 
diff --git a/src/opr/assert.c b/src/opr/assert.c
new file mode 100644 (file)
index 0000000..268ed93
--- /dev/null
@@ -0,0 +1,15 @@
+#include <afsconfig.h>
+#include <afs/param.h>
+
+#include <roken.h>
+#include "opr.h"
+
+#ifdef AFS_NT40_ENV
+void
+opr_NTAbort(void)
+{
+    DebugBreak();
+}
+#endif
+
+
index dacc7035545ad4a7514264a7013da83264585e69..20a4e82f41ed112d794120579f5dc0f17a1b8180 100644 (file)
@@ -1,7 +1,14 @@
 #ifndef OPENAFS_OPR_OPR_H
 #define OPENAFS_OPR_OPR_H 1
 
-/* casestrcpy.c */
+/* assert.c */
+#ifdef AFS_NT40_ENV
+# define opr_abort() opr_NTAbort()
+extern void opr_NTAbort(void);
+#else
+# define opr_abort() abort()
+#endif
+
 
 #define lcstring opr_lcstring
 #define ucstring opr_ucstring
index 4e574287171125e7393e050ee71e94356a372cd9..0ba9b7458d874ae0b2c6768ed7b50704220dd5df 100644 (file)
@@ -233,7 +233,7 @@ osi_Panic(char *msg, ...)
     va_end(ap);
     fflush(stderr);
     fflush(stdout);
-    afs_abort();
+    opr_abort();
 }
 
 /*
index e3abf173e35d0179693fd7f2607b818b5daf7bfc..3fa8ed5dabfb286e4d8f91e7b4f83307e03f2476 100644 (file)
@@ -19,7 +19,8 @@ LIBS = \
        $(DESTDIR)\lib\afs\mtafsutil.lib \
        $(DESTDIR)\lib\afsrpc.lib \
        $(DESTDIR)\lib\afspthread.lib \
-        $(DESTDIR)\lib\afsroken.lib
+        $(DESTDIR)\lib\afsroken.lib \
+       $(DESTDIR)\lib\opr.lib
 
 
 RXTESTOBJS = $(OUT)\testclient.obj $(OUT)\testserver.obj
index 4a2978bbf3745feb77298aa8c4bb80ed3579de67..e06933ed1a0061f57faaa4b1482e54842b8d4461 100644 (file)
@@ -27,6 +27,8 @@
 #endif
 #include <sys/stat.h>
 #include <signal.h>
+
+#include <afs/opr.h>
 #include <rx/rx_clock.h>
 #include <rx/rx.h>
 #include <rx/rx_globals.h>
@@ -416,7 +418,7 @@ Abort(const char *msg, ...)
        rx_PrintStats(debugFile);
        fflush(debugFile);
     }
-    afs_abort();
+    opr_abort();
     exit(1);
 }
 
index 12289196c1c26a615c55ff5bb6b9613270f16891..5780db30892004070c43f45fb9de1601abc1f26f 100644 (file)
@@ -28,6 +28,8 @@
 #endif
 #include <signal.h>
 #include <sys/stat.h>
+
+#include <afs/opr.h>
 #include <rx/rx_clock.h>
 #include <rx/rx.h>
 #include <rx/rx_globals.h>
@@ -319,7 +321,7 @@ Abort(char *msg, ...)
        rx_PrintStats(debugFile);
        fflush(debugFile);
     }
-    afs_abort();
+    opr_abort();
     exit(1);
 }
 
index 96bfeec967ce0ba1beb517a92f55d6e32b44a34f..21c44163d7b35cbb6218ff9e85f5894b0de83e7d 100644 (file)
@@ -25,7 +25,8 @@ RXDLIBS = $(LIBDIR)\afs\afscmd.lib \
          $(LIBDIR)\afslwp.lib \
          $(LIBDIR)\afs\afsutil.lib \
           $(LIBDIR)\afs\afsreg.lib \
-         $(LIBDIR)\afsroken.lib
+         $(LIBDIR)\afsroken.lib \
+         $(LIBDIR)\opr.lib
 
 $(OUT)\rxdebug.res: rxdebug.rc $(VERSFILE).h
        $(RC) /Fo$*.RES $(*F).rc 
index 31bed6601b8903df764c71ad3f7b88746476c697..eef5c1cd2c7c439158efafc5040e4eee47c2b8c1 100644 (file)
@@ -57,14 +57,6 @@ extern int OpenLog(const char *filename);
 extern int ReOpenLog(const char *fileName);
 extern void SetupLogSignals(void);
 
-/* abort the current process. */
-#ifdef AFS_NT40_ENV
-#define afs_abort() afs_NTAbort()
-#else
-#define afs_abort() abort()
-#endif
-
-
 #ifdef AFS_NT40_ENV
 #ifndef _MFC_VER
 #include <winsock2.h>
@@ -77,8 +69,6 @@ extern void SetupLogSignals(void);
 /* Unbuffer output when Un*x would do line buffering. */
 #define setlinebuf(S) setvbuf(S, NULL, _IONBF, 0)
 
-/* Abort on error, possibly trapping to debugger or dumping a trace. */
-     void afs_NTAbort(void);
 #endif /* AFS_NT40_ENV */
 
 #ifndef HAVE_POSIX_REGEX
index 197e1fdbf0d8cf9cbdf5e0aa34779e0987acd98e..0b51f11f88e3ed3e66e9852f4957f2a78ba2ad38 100644 (file)
 #include <afs/param.h>
 
 #include <roken.h>
+#include <afs/opr.h>
 
 #include "afsutil.h"
 
-#ifdef AFS_NT40_ENV
-void
-afs_NTAbort(void)
-{
-    DebugBreak();
-}
-#endif
-
 #define TIMESTAMP_BUFFER_SIZE 26  /* including the null */
 
 void
@@ -38,5 +31,5 @@ AssertionFailed(char *file, int line)
     fprintf(stderr, "%s Assertion failed! file %s, line %d.\n", tdate, file,
            line);
     fflush(stderr);
-    afs_abort();
+    opr_abort();
 }
index 3061873320c2afb52e0ab5438ae9a78c35532960..99eda7068d985c5ef39d3b70ffbf268e42be0145 100644 (file)
@@ -26,7 +26,8 @@ LIBS= \
        $(LIBDIR)\afs\afspioctl.lib \
        $(LIBDIR)\afs\afsutil.lib \
        $(LIBDIR)\afs\afsreg.lib \
-       $(LIBDIR)\afsroken.lib
+       $(LIBDIR)\afsroken.lib \
+       $(LIBDIR)\opr.lib
 
 
 install: \