OpenZFS on Linux and FreeBSD
Go to file
Neependra Khare 3f688a8c38 Add cv_timedwait_interruptible() function
The cv_timedwait() function by definition must wait unconditionally
for cv_signal()/cv_broadcast() before waking.  This causes processes
to go in the D state which increases the load average.  The load
average is the summation of processes in D state and run queue.

To avoid this it can be desirable to sleep interruptibly.  These
processes do not count against the load average but may be woken by
a signal.  It is up to the caller to determine why the process
was woken it may be for one of three reasons.

  1) cv_signal()/cv_broadcast()
  2) the timeout expired
  3) a signal was received

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2011-01-11 12:14:48 -08:00
cmd Support custom build directories 2010-09-05 21:49:05 -07:00
config Refresh autogen.sh products 2010-11-30 10:36:58 -08:00
include Add cv_timedwait_interruptible() function 2011-01-11 12:14:48 -08:00
lib Support custom build directories 2010-09-05 21:49:05 -07:00
module Add cv_timedwait_interruptible() function 2011-01-11 12:14:48 -08:00
patches Reimplement rwlocks for Linux lock profiling/analysis. 2009-09-18 16:09:47 -07:00
scripts Support custom build directories 2010-09-05 21:49:05 -07:00
.gitignore Ignore unsigned module build products 2010-03-11 14:29:17 -08:00
AUTHORS Public Release Prep 2010-05-17 15:18:00 -07:00
COPYING Public Release Prep 2010-05-17 15:18:00 -07:00
ChangeLog Prep for spl-0.5.0 tag 2010-08-13 09:33:50 -07:00
DISCLAIMER Public Release Prep 2010-05-17 15:18:00 -07:00
INSTALL Public Release Prep 2010-05-17 15:18:00 -07:00
META Prep for 0.5.2 tag 2010-11-05 11:52:46 -07:00
Makefile.am Support custom build directories 2010-09-05 21:49:05 -07:00
Makefile.in Support custom build directories 2010-09-05 21:49:05 -07:00
README.markdown Fix markdown rendering 2010-09-15 09:05:34 -07:00
autogen.sh Public Release Prep 2010-05-17 15:18:00 -07:00
configure Refresh autogen.sh products 2010-11-30 10:36:58 -08:00
configure.ac Support custom build directories 2010-09-05 21:49:05 -07:00
spl-modules.spec.in Minor spec file cleanup for RHEL6 package dependency. 2010-05-21 11:53:49 -07:00
spl.spec.in Remove usage of the __id_u macro for portability. 2009-10-05 12:51:58 -07:00
spl_config.h.in Linux 2.6.36 compat, fs_struct->lock type change 2010-11-09 13:29:47 -08:00

README.markdown

The Solaris Porting Layer (SPL) is a Linux kernel module which provides many of the Solaris kernel APIs. This shim layer makes it possible to run Solaris kernel code in the Linux kernel with relatively minimal modification. This can be particularly useful when you want to track upstream Solaris development closely and dont want the overhead of maintaining a large patch which converts Solaris primitives to Linux primitives.

To build packages for your distribution:

$ ./configure
$ make pkg

Full documentation for building, configuring, and using the SPL can be found at: http://zfsonlinux.org