diff options
Diffstat (limited to 'libsigsegv/README')
-rw-r--r-- | libsigsegv/README | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/libsigsegv/README b/libsigsegv/README deleted file mode 100644 index 2f4e7651..00000000 --- a/libsigsegv/README +++ /dev/null @@ -1,123 +0,0 @@ - GNU libsigsegv - Handling page faults in user mode - -This is a library for handling page faults in user mode. A page fault -occurs when a program tries to access to a region of memory that is -currently not available. Catching and handling a page fault is a useful -technique for implementing: - - - pageable virtual memory, - - memory-mapped access to persistent databases, - - generational garbage collectors, - - stack overflow handlers, - - distributed shared memory, - - ... - -This library supports three sets of functions, all defined in <sigsegv.h>: - - - Global SIGSEGV handlers: - sigsegv_install_handler, sigsegv_deinstall_handler. - - - Local SIGSEGV handlers (a handler per memory area): - sigsegv_init, sigsegv_register, sigsegv_unregister, sigsegv_dispatch. - - - Stack overflow handlers: - stackoverflow_install_handler, stackoverflow_deinstall_handler. - -Each of the three APIs can be used independently or simultaneously. -For examples of the use of the APIs, see: - - - Global SIGSEGV handlers: see tests/sigsegv1.c. - - Local SIGSEGV handlers: see tests/sigsegv2.c. - - Stack overflow handlers: see tests/stackoverflow1.c. - - -About portability. - -Some platforms don't support this functionality. In <sigsegv.h>, the -preprocessor macro HAVE_SIGSEGV_RECOVERY will be defined if global and -local SIGSEGV handlers are available, and the preprocessor macro -HAVE_STACK_OVERFLOW_RECOVERY will be defined if stack overflow handlers -are available. Note that the declared functions are available in all cases; -on platforms where HAVE_SIGSEGV_RECOVERY or HAVE_STACK_OVERFLOW_RECOVERY is -not defined, they will simply always return an error code or do nothing. - -The list of platforms where this library is known to work is contained in -the file PORTING. - - -About pageable virtual memory. - -Pageable virtual memory is usually done in the operating system's kernel. -This library helps in implementing the others. - -Installing a page fault handler is usually more efficient than doing -access checks in software at every access, because it's effectively the -hardware (the MMU) which checks whether a page is present or not. - -Note that if you use system calls (like read()) to write into write- -protected pages, the system will react by returning -1 and setting -errno to EFAULT, instead of signalling SIGSEGV and restarting the system -call. In this case, the program has to do what the SIGSEGV handler would -do, and then restart the read() operation. Some buggy systems (SunOS 4) -go into an endless loop on this occasion; on these systems you have to -make sure that an area is writable _before_ you call read() on it, - - -About stack overflow handlers. - -In some applications, the stack overflow handler performs some cleanup or -notifies the user and then immediately terminates the application. In -other applications, the stack overflow handler longjmps back to a central -point in the application. This library supports both uses. In the second -case, the handler must ensure to restore the normal signal mask (because -many signals are blocked while the handler is executed), and must also -call sigsegv_leave_handler() to transfer control; then only it can longjmp -away. - - -About shared libraries. - -This library builds as a static library by default. This seems useful -because of the small size of the library (4 KB). Of course, you can build -it as a shared library by specifying the configure option '--enable-shared'. - - -Installation instructions on Unix: - - ./configure - make - make check - make install - -Installation instructions on Woe32: - - See README.woe32. - - -Using libsigsegv in your package: - - For the APIs, see the comments in the <sigsegv.h> file (generated from - src/sigsegv.h.in). - - An autoconf macro for determining where libsigsegv is installed and how to - link with it is part of GNU gnulib, see - <http://www.gnu.org/software/gnulib/MODULES.html#module=libsigsegv> - - -Copyright notice: - -Copyright 1998-1999, 2002-2008 Bruno Haible <bruno@clisp.org> -Copyright 2002-2005 Paolo Bonzini <bonzini@gnu.org> -Copyright 2008 Eric Blake <ebb9@byu.net> - -This is free software distributed under the GNU General Public Licence -described in the file COPYING. There is ABSOLUTELY NO WARRANTY, explicit or -implied, on this software. - - -Download: - -ftp://ftp.gnu.org/pub/gnu/libsigsegv/libsigsegv-2.6.tar.gz -http://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.6.tar.gz - -Homepage: - -http://libsigsegv.sourceforge.net/ |