1This is the mach_support branch. It adds support for a subset of the mach 2API as a precursor to supporting launchd. The mach interface generator should 3be able to work with modern .defs (MIG) files. 4 5Basic Mach IPC is supported through the mach kernel module or COMPAT_MACH_STATIC. 6It is now a module by default to workaround the limited typeid space (15 bits) of 7dtrace. 8 9 10The Mach services kernel module (mach.ko) can only be loaded at boot time. Add the following line 11to /boot/loader.conf: 12mach_load="YES" 13 14As it stands, launchd will dispatch jobs but as it is is currently set to only link 15dynamically - preventing from running as pid1. It is considered early alpha. 16 17launchd can be run as pid1 by adding the following to loader.conf: 18init_path="/sbin/launchd" 19or at the loader prompt: 20set init_path="/sbin/launchd" 21 22 23Note that launchctl has just been added to the build. It uses json plists. XML 24plists can be converted with the help of OSX's plutil. Basic plists will be added 25to the tree shortly. 26 27 28Unsupported OSX / Mach functionality: 29 - updating the audit token when setuid/setgid/ etc are called 30 - (OOL) out of line descriptors of any kind 31 - memory object creation (used in parts of libdispatch) 32 - kevent64 support for receipt of messages in kevent (new in Yosemite, but not currently used by anything that I know of) 33 - voucher ports (used only by most recent parts of libdispatch) 34 35 36Work to be done for v0: 37 38- launch gettys so that console input works 39 40- make launchd useful 41 - write plists for basic services 42 43 - track down the shims for xinetd / crond 44 45- verify that in-tree libdispatch works 46 - get the tests associated with libdispatch compiling to figure out if anything 47 is broken - the latest versions can be found at: 48 http://libdispatch.macosforge.org/trac/browser/trunk/testing 49 50 - figure out why that function for block private data isn't being generated 51 52 53Missing mach features ordered by version of launchd by which they'll be supported: 54 55v0: mach support is now feature complete for v0 56v1: 57Support: 58- MACH_SEND_NOTIFY 59 60kevent flags needed by (at least) libdispatch: 61- EVFILT_VM 62 - NOTE_VM_PRESSURE 63 - NOTE_VM_ERROR 64 65per-user & per-session launchds (xpc domain system in domain.defs) 66 - The audit session system calls: audit_session_self, audit_session_join, 67 and audit_session_port 68 69libUCL (YAML & JSON) configuration 70 71extended posix_spawnattr calls in support/posix_spawn.c are not expected 72to actually work yet, among others: 73- posix_spawnattr_setbinpref_np 74- posix_spawnattr_getbinpref_np 75 76proc_setpcontrol 77proc_get_dirty 78proc_set_dirty 79proc_track_dirty 80 81 82v2 or later: 83 84- AF_SYSTEM domain sockets and the event protocols 85 86- XPC_JETSAM_BANDs (handle memory pressure) 87 88I/O priority setting functionality - system call: 89__iopolicysys supports: 90 - getiopolicy_np 91 - setiopolicy_np 92 93 94- except NOTE_EXIT_MEMORY of questionable relevance 95#define NOTE_EXITSTATUS 0x04000000 /* exit status to be returned, valid for child process only */ 96#define NOTE_EXIT_DETAIL 0x02000000 /* provide details on reasons for exit */ 97/* 98 * If NOTE_EXIT_DETAIL is present, these bits indicate specific reasons for exiting. 99 */ 100#define NOTE_EXIT_DETAIL_MASK 0x00070000 101#define NOTE_EXIT_DECRYPTFAIL 0x00010000 102#define NOTE_EXIT_MEMORY 0x00020000 103#define NOTE_EXIT_CSERROR 0x00040000 104 105 106 107 108 109This is the top level of the FreeBSD source directory. This file 110was last revised on: 111$FreeBSD$ 112 113For copyright information, please see the file COPYRIGHT in this 114directory (additional copyright information also exists for some 115sources in this tree - please see the specific source directories for 116more information). 117 118The Makefile in this directory supports a number of targets for 119building components (or all) of the FreeBSD source tree, the most 120commonly used one being ``world'', which rebuilds and installs 121everything in the FreeBSD system from the source tree except the 122kernel, the kernel-modules and the contents of /etc. The ``world'' 123target should only be used in cases where the source tree has not 124changed from the currently running version. See: 125http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html 126for more information, including setting make(1) variables. 127 128The ``buildkernel'' and ``installkernel'' targets build and install 129the kernel and the modules (see below). Please see the top of 130the Makefile in this directory for more information on the 131standard build targets and compile-time flags. 132 133Building a kernel is a somewhat more involved process, documentation 134for which can be found at: 135 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html 136And in the config(8) man page. 137Note: If you want to build and install the kernel with the 138``buildkernel'' and ``installkernel'' targets, you might need to build 139world before. More information is available in the handbook. 140 141The sample kernel configuration files reside in the sys/<arch>/conf 142sub-directory (assuming that you've installed the kernel sources), the 143file named GENERIC being the one used to build your initial installation 144kernel. The file NOTES contains entries and documentation for all possible 145devices, not just those commonly used. It is the successor of the ancient 146LINT file, but in contrast to LINT, it is not buildable as a kernel but a 147pure reference and documentation file. 148 149 150Source Roadmap: 151--------------- 152bin System/user commands. 153 154cddl Various commands and libraries under the Common Development 155 and Distribution License. 156 157contrib Packages contributed by 3rd parties. 158 159crypto Cryptography stuff (see crypto/README). 160 161etc Template files for /etc. 162 163games Amusements. 164 165gnu Various commands and libraries under the GNU Public License. 166 Please see gnu/COPYING* for more information. 167 168include System include files. 169 170kerberos5 Kerberos5 (Heimdal) package. 171 172lib System libraries. 173 174libexec System daemons. 175 176release Release building Makefile & associated tools. 177 178rescue Build system for statically linked /rescue utilities. 179 180sbin System commands. 181 182secure Cryptographic libraries and commands. 183 184share Shared resources. 185 186sys Kernel sources. 187 188tools Utilities for regression testing and miscellaneous tasks. 189 190usr.bin User commands. 191 192usr.sbin System administration commands. 193 194 195For information on synchronizing your source tree with one or more of 196the FreeBSD Project's development branches, please see: 197 198 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html 199