freebsd-dev/sys/kern
John Baldwin 8e38aeff17 Add a new file descriptor type for IPC shared memory objects and use it to
implement shm_open(2) and shm_unlink(2) in the kernel:
- Each shared memory file descriptor is associated with a swap-backed vm
  object which provides the backing store.  Each descriptor starts off with
  a size of zero, but the size can be altered via ftruncate(2).  The shared
  memory file descriptors also support fstat(2).  read(2), write(2),
  ioctl(2), select(2), poll(2), and kevent(2) are not supported on shared
  memory file descriptors.
- shm_open(2) and shm_unlink(2) are now implemented as system calls that
  manage shared memory file descriptors.  The virtual namespace that maps
  pathnames to shared memory file descriptors is implemented as a hash
  table where the hash key is generated via the 32-bit Fowler/Noll/Vo hash
  of the pathname.
- As an extension, the constant 'SHM_ANON' may be specified in place of the
  path argument to shm_open(2).  In this case, an unnamed shared memory
  file descriptor will be created similar to the IPC_PRIVATE key for
  shmget(2).  Note that the shared memory object can still be shared among
  processes by sharing the file descriptor via fork(2) or sendmsg(2), but
  it is unnamed.  This effectively serves to implement the getmemfd() idea
  bandied about the lists several times over the years.
- The backing store for shared memory file descriptors are garbage
  collected when they are not referenced by any open file descriptors or
  the shm_open(2) virtual namespace.

Submitted by:	dillon, peter (previous versions)
Submitted by:	rwatson (I based this on his version)
Reviewed by:	alc (suggested converting getmemfd() to shm_open())
2008-01-08 21:58:16 +00:00
..
bus_if.m o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
imgact_aout.c Fix for the panic("vm_thread_new: kstack allocation failed") and 2007-11-05 11:36:16 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Fall back to the binary-specified interpreter (ld-elf.so.1) if the 2008-01-05 08:35:56 +00:00
imgact_gzip.c Fix for the panic("vm_thread_new: kstack allocation failed") and 2007-11-05 11:36:16 +00:00
imgact_shell.c
inflate.c
init_main.c give thread0 the tid 100000 and bumpt the others to start at 100001 2007-12-22 04:56:48 +00:00
init_sysent.c Regenerate. 2007-08-16 05:32:26 +00:00
kern_acct.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
kern_alq.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
kern_clock.c Add a new 'why' argument to kdb_enter(), and a set of constants to use 2007-12-25 17:52:02 +00:00
kern_condvar.c Commit 2/14 of sched_lock decomposition. 2007-06-04 23:50:56 +00:00
kern_conf.c Apply a workaround for the unkillable jail problem where some devices created 2007-12-05 01:22:03 +00:00
kern_context.c Further system call comment cleanup: 2007-03-05 13:10:58 +00:00
kern_cpu.c If we're on an SMP kernel and there is more than 1 CPU, reject any attempts 2007-10-30 22:18:08 +00:00
kern_descrip.c Add a new file descriptor type for IPC shared memory objects and use it to 2008-01-08 21:58:16 +00:00
kern_environment.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
kern_event.c Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
kern_exec.c Add the superpage reservation system. This is "part 2 of 2" of the 2007-12-29 19:53:04 +00:00
kern_exit.c Introduce a way to make pure kernal threads. 2007-10-26 08:00:41 +00:00
kern_fork.c When forking, the new thread deserves a name too. Don't just use the 2007-11-15 02:13:44 +00:00
kern_idle.c rename the process to 'idle' and 'intr' as per jhb. 2007-10-27 00:52:26 +00:00
kern_intr.c fix typo in code normally not compiled in. 2007-10-29 20:45:31 +00:00
kern_jail.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
kern_kse.c Fix build. 2007-11-15 14:16:20 +00:00
kern_kthread.c Acquire the process mutex and spin locks before calling thread_exit() in 2007-11-15 21:45:17 +00:00
kern_ktr.c Remove slightly oddly placed suser() call from the KTR/ALQ setup sysctl: 2006-09-09 16:09:01 +00:00
kern_ktrace.c A bunch more files that should probably print out a thread name 2007-11-14 06:51:33 +00:00
kern_linker.c The kernel linker includes a number of utility functions to look up symbol 2007-12-01 19:24:28 +00:00
kern_lock.c Trimm out now unused option LK_EXCLUPGRADE from the lockmgr namespace. 2007-12-28 00:38:13 +00:00
kern_lockf.c Do not call free() while holding vnode interlock. 2007-08-07 09:04:50 +00:00
kern_malloc.c Use vm_offset_t for kmembase and kmemlimit rather than char *, avoiding 2007-06-27 13:39:38 +00:00
kern_mbuf.c - fix tab to space issue, hmm maybe I should use vi. 2007-12-15 23:14:53 +00:00
kern_mib.c Actually declare the kern.features sysctl node. 2007-12-31 22:03:57 +00:00
kern_module.c Move several data structure definitions out of freebsd32_misc.c and into 2007-12-06 23:11:27 +00:00
kern_mtxpool.c Universally adopt most conventional spelling of acquire. 2007-05-27 20:50:23 +00:00
kern_mutex.c - Re-implement lock profiling in such a way that it no longer breaks 2007-12-15 23:13:31 +00:00
kern_ntptime.c Only require privilege to set the current time adjustment, not in order to 2007-06-14 18:37:58 +00:00
kern_physio.c
kern_pmc.c Kernel and hwpmc(4) support for callchain capture. 2007-12-07 08:20:17 +00:00
kern_poll.c Remove the now-unused NET_{LOCK,UNLOCK,ASSERT}_GIANT() macros, which 2007-08-06 14:26:03 +00:00
kern_priv.c Continue kernel privilege cleanup for 7.0: unstaticize suser_enabled and 2007-07-02 14:03:29 +00:00
kern_proc.c Return ESRCH when a kernel stack is queried on a process in execve() -- 2007-12-27 22:44:01 +00:00
kern_prot.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
kern_resource.c Fix LOR of thread lock and umtx's priority propagation mutex due 2007-12-11 08:25:36 +00:00
kern_rmlock.c Expand lock class with the "virtual" function lc_assert which will offer 2007-11-18 14:43:53 +00:00
kern_rwlock.c - Re-implement lock profiling in such a way that it no longer breaks 2007-12-15 23:13:31 +00:00
kern_sema.c
kern_shutdown.c Add textdump(4) facility, which provides an alternative form of kernel 2007-12-26 11:32:33 +00:00
kern_sig.c Be more exact with sigaction SA_SIGINFO handling. 2007-12-18 20:39:13 +00:00
kern_subr.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
kern_switch.c generally we are interested in what thread did something as 2007-11-14 06:21:24 +00:00
kern_sx.c - Re-implement lock profiling in such a way that it no longer breaks 2007-12-15 23:13:31 +00:00
kern_synch.c A bunch more files that should probably print out a thread name 2007-11-14 06:51:33 +00:00
kern_syscalls.c Make system call modules a bit more robust: 2006-08-01 16:32:20 +00:00
kern_sysctl.c Add sysctl_rename_oid() to support device_set_unit() usage. Otherwise, 2007-11-30 21:29:08 +00:00
kern_tc.c Note what is too {short,long}. 2008-01-02 18:48:27 +00:00
kern_thr.c This time REALLY copy the name from the proc to the thread as a default. 2007-11-15 06:35:26 +00:00
kern_thread.c give thread0 the tid 100000 and bumpt the others to start at 100001 2007-12-22 04:56:48 +00:00
kern_time.c rufetch and calcru sometimes should be called atomically together. 2007-06-09 21:48:44 +00:00
kern_timeout.c Cache the value of c_lock as it can change, in the struct, 2007-11-22 12:15:54 +00:00
kern_umtx.c Check NULL pointer. 2007-12-17 08:09:37 +00:00
kern_uuid.c Correct typo. 2007-04-23 12:53:00 +00:00
kern_xxx.c Further system call comment cleanup: 2007-03-05 13:10:58 +00:00
ksched.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
link_elf_obj.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
link_elf.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
linker_if.m Add a function to list symbols in a file and their values at the 2007-11-18 00:23:31 +00:00
Make.tags.inc Remove netkey directory from cscope/TAGs generation and replace 2007-07-05 08:55:14 +00:00
Makefile style.Makefile(5) 2007-12-14 21:30:51 +00:00
makesyscalls.sh Add support for COMPAT6 syscalls. 2007-07-04 22:38:28 +00:00
md4c.c
md5c.c
p1003_1b.c generally we are interested in what thread did something as 2007-11-14 06:21:24 +00:00
posix4_mib.c Fix mispatch of includes list; allows my kernel to build successfully. 2006-11-12 03:34:03 +00:00
sched_4bsd.c - Re-implement lock profiling in such a way that it no longer breaks 2007-12-15 23:13:31 +00:00
sched_ule.c - Restore timeslicing code for all bit SCHED_FIFO priority classes. 2008-01-05 04:47:31 +00:00
serdev_if.m MFp4: Add the ipend() method to the serdev I/F to allow umbrella 2006-04-23 22:12:39 +00:00
subr_acl_posix1e.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
subr_autoconf.c Add a mutex to protect the list of interrupt config hooks. We do assume 2006-07-19 18:53:56 +00:00
subr_blist.c
subr_bus.c When devclass_get_maxunit is passed a NULL, return -1 to indicate that 2007-12-19 22:05:07 +00:00
subr_clist.c
subr_clock.c If clock_ct_to_ts fails to convert time time from the real time clock, 2007-07-23 09:42:32 +00:00
subr_devstat.c
subr_disk.c Add a new I/O request - BIO_FLUSH, which basically tells providers below to 2006-10-31 21:11:21 +00:00
subr_eventhandler.c
subr_fattime.c Better naming of fattime conversion functions, they do convert to timespec 2006-10-24 10:27:23 +00:00
subr_firmware.c Cleanup and document the implementation of firmware(9) based on 2007-02-15 17:21:31 +00:00
subr_hints.c Use a sleep mutex instead of an sx lock for the kernel environment. This 2006-07-09 21:42:58 +00:00
subr_kdb.c Add a new 'why' argument to kdb_enter(), and a set of constants to use 2007-12-25 17:52:02 +00:00
subr_kobj.c
subr_lock.c Fix logic in skipcount handling (used to sample every 1/N lock operations 2008-01-08 01:11:40 +00:00
subr_log.c
subr_mbpool.c Add parens around *free in *free++ in mbp_count() so that mbp_count() 2007-05-27 17:38:36 +00:00
subr_mchain.c
subr_module.c
subr_msgbuf.c
subr_param.c Export maxswzone, maxbcache, maxtsiz, dfldsiz, maxdsiz, dflssiz, maxssiz, 2007-10-16 10:40:53 +00:00
subr_pcpu.c generally we are interested in what thread did something as 2007-11-14 06:21:24 +00:00
subr_power.c
subr_prf.c Instead of doing comparisons using the pcpu area to see if 2007-03-08 06:44:34 +00:00
subr_prof.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
subr_rman.c Complete removal of restriction about overlaps to rman_manage_region: 2007-04-28 07:37:49 +00:00
subr_rtc.c Use utc_offset() where applicable, and hide the internals of it 2006-10-02 18:23:37 +00:00
subr_sbuf.c
subr_scanf.c
subr_sleepqueue.c A bunch more files that should probably print out a thread name 2007-11-14 06:51:33 +00:00
subr_smp.c A few whitespace fixes. 2008-01-02 17:09:15 +00:00
subr_stack.c When a symbol name can't be resolved, return "??" as the name, rather 2007-12-03 14:44:35 +00:00
subr_taskqueue.c Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
subr_trap.c Kernel and hwpmc(4) support for callchain capture. 2007-12-07 08:20:17 +00:00
subr_turnstile.c generally we are interested in what thread did something as 2007-11-14 06:21:24 +00:00
subr_unit.c Since cdev mutex is after system map mutex in global lock order, free() 2007-07-04 06:56:58 +00:00
subr_witness.c Add a new 'why' argument to kdb_enter(), and a set of constants to use 2007-12-25 17:52:02 +00:00
sys_generic.c Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
sys_pipe.c Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
sys_process.c Use VM_FAULT_DIRTY to fault in pages for write access in 2007-11-08 19:35:36 +00:00
sys_socket.c Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
syscalls.c Regenerate. 2007-08-16 05:32:26 +00:00
syscalls.master Add a new file descriptor type for IPC shared memory objects and use it to 2008-01-08 21:58:16 +00:00
systrace_args.c Regenerate. 2007-08-16 05:32:26 +00:00
sysv_ipc.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
sysv_msg.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
sysv_sem.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
sysv_shm.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
tty_compat.c
tty_conf.c
tty_cons.c Rewrite kern.console handling in sbuf(9). My intention is to leave 2007-12-25 21:17:34 +00:00
tty_pts.c Fix bad function type passed to destroy_dev_sched_cb(). 2007-07-05 05:54:47 +00:00
tty_pty.c Bump up the number of ttys supported by pty(4) to 512 by making use of 2007-11-19 20:49:42 +00:00
tty_subr.c
tty_tty.c Lock Giant and proctree lock around dereferencing p_session->s_ttyvp->v_rdev. 2007-07-03 17:46:37 +00:00
tty.c Close a race in the kern.ttys sysctl handler that resulted in panics in 2008-01-08 04:53:28 +00:00
uipc_accf.c
uipc_cow.c
uipc_debug.c Add missing sb_sndptr* fields to db_print_sockbuf(). 2008-01-03 15:19:31 +00:00
uipc_domain.c Remove the now-unused NET_{LOCK,UNLOCK,ASSERT}_GIANT() macros, which 2007-08-06 14:26:03 +00:00
uipc_mbuf2.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
uipc_mbuf.c This patch adds an M_NOFREE flag which allows one to mark an mbuf as 2007-10-06 21:42:39 +00:00
uipc_mqueue.c Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
uipc_sem.c Free MAC label on a POSIX semaphore when the semaphore is freed. 2008-01-07 22:03:19 +00:00
uipc_shm.c Add a new file descriptor type for IPC shared memory objects and use it to 2008-01-08 21:58:16 +00:00
uipc_sockbuf.c Add SB_NOCOALESCE flag to disable socket buffer update in place 2007-12-17 10:02:01 +00:00
uipc_socket.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
uipc_syscalls.c Remove explicit locking of struct file. 2007-12-30 01:42:15 +00:00
uipc_usrreq.c - Place the fhold() in unp_internalize_fp to be more consistent with refs. 2008-01-01 01:46:42 +00:00
vfs_acl.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
vfs_aio.c Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
vfs_bio.c Rather than not redirting the bp when we get ENXIO, only redirty it 2007-12-30 05:53:45 +00:00
vfs_cache.c Remove remaining Giant acquisition around vn_fullpath1. This was missed 2007-11-22 21:26:25 +00:00
vfs_cluster.c - Move rusage from being per-process in struct pstats to per-thread in 2007-06-01 01:12:45 +00:00
vfs_default.c Since renaming of vop_lock to _vop_lock, pre- and post-condition 2007-05-18 13:02:13 +00:00
vfs_export.c Move vnode-to-file-handle translation from vfs_vptofh to vop_vptofh method. 2007-02-15 22:08:35 +00:00
vfs_extattr.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
vfs_hash.c Make insmntque() externally visibile and allow it to fail (e.g. during 2007-03-13 01:50:27 +00:00
vfs_init.c Remove VFS_VPTOFH entirely. API is already broken and it is good time to 2007-02-16 17:32:41 +00:00
vfs_lookup.c Merge first in a series of TrustedBSD MAC Framework KPI changes 2007-10-24 19:04:04 +00:00
vfs_mount.c In vfs_scanopt(), make sure that the mount option value is not NULL 2007-12-31 23:44:53 +00:00
vfs_subr.c In "show lockedvnods" DDB command, use db_printf() rather than printf() 2007-12-28 00:47:31 +00:00
vfs_syscalls.c Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
vfs_vnops.c Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
vnode_if.src Revert UF_OPENING workaround for CURRENT. 2007-05-31 11:51:53 +00:00