diff --git a/en/projects/c99/index.sgml b/en/projects/c99/index.sgml index 3b57e148af..4f56181771 100644 --- a/en/projects/c99/index.sgml +++ b/en/projects/c99/index.sgml @@ -1,1998 +1,1998 @@ - + %includes; %developers; "> "> "> "> "> assert(3)"> printf(3)"> scanf(3)"> strtod(3)"> printf(9)"> freebsd-standards-subscribe@FreeBSD.org"> freebsd-standards@FreeBSD.org"> ]> FreeBSD C99 & POSIX Conformance Project FreeBSD C99 & POSIX Conformance Project
Project Goal

The FreeBSD C99 & POSIX Conformance Project aims to implement all requirements of the ISO 9899:1999 (C99) and IEEE 1003.1-2001 (POSIX) standards. In cases where aspects of these standards cannot be followed, those aspects will be documented in the c99(7) or posix(7) manuals. It is also an aim of this project to implement regression tests to ensure correctness whenever possible.

Project Plan

All of the initial development takes place in the 5-CURRENT branch and most changes are merged into the 4-STABLE branch. Since this is a rather large project and is being done on a volunteer basis, there is no set schedule.

How to Contribute

The project is always looking for additional contributors. If you wish to participate, the best way to find out what is happening is to subscribe to the freebsd-standards mailing list. If you are working on a specific task relating to the project, you should contact mike@FreeBSD.org with a description of the task so that your task can be listed below.

Resources and Links Status Board

Task Responsible Last Updated Status
5.x 4.x
Documentation
Create stdint(7) manual to document <stdint.h>. &a.mike; 15 September 2002 &status.done; &status.n-a;
Document standards conformity level of the API.   26 March 2002 &status.wip; &status.blank;
Document thread safety and async-cancel safety.   26 March 2002 &status.wip; &status.blank;
Create c99(7) and posix(7) manuals.   11 December 2001 &status.new; &status.blank;
Document in posix(7) that the batch job management utilities are available in the port net/generic-nqs.   11 December 2001 &status.new; &status.blank;
Document flockfile(3), ftrylockfile(3), funlockfile(3).   17 September 2002 &status.new; &status.blank;
Document new _SC options in sysconf(3) (PR: 20528).   25 November 2002 &status.new; &status.blank;


Task Responsible Last Updated Status
5.0 4.x
Functions and System Calls
Add __func__ reporting to &man.assert.3;. &a.asmodai; 27 October 2001 &status.done; &status.n-a;
Implement imaxabs(), imaxdiv(), llabs(), lldiv(). &a.mike; 14 November 2001 &status.done; &status.n-a;
Implement atoll(), strtoimax(), strtoumax(). &a.fenner; 27 November 2001 &status.done; &status.n-a;
Implement new length modifiers (hh, j, t, z) and new flag (') in &man.printf.3;. &a.wollman;,
&a.fenner;
30 November 2001 &status.done; &status.n-a;
Implement strerror_r(). &a.wes; 20 December 2001 &status.done; &status.done;
Implement tgamma() based on Lite1's gamma(). &a.bde; 27 March 2002 &status.done; &status.n-a;
Implement new length modifiers (hh, j, ll, t, z) in &man.scanf.3;. &a.fenner; 20 April 2002 &status.done; &status.n-a;
Add WCONTINUED to waitpid(2). &a.mike; 1 June 2002 &status.done; &status.n-a;
Implement new conversion specifiers (%j and %n) in &man.printf.9;. &a.dd;
&a.des;
3 June 2002 &status.done; &status.n-a;
Implement fstatvfs() and statvfs() (trivial). &a.wollman; 14 June 2002 &status.done; &status.n-a;
Implement fmtmsg(). &a.mike; 8 August 2002 &status.done; &status.n-a;
Implement ulimit(). &a.mkm; 8 August 2002 &status.done; &status.n-a;
Implement C99's _Exit(). &a.wollman; 11 September 2002 &status.done; &status.n-a;
Add required options for POSIX.1-2001 to glob(). (partial MFC) &a.mikeh; 20 September 2002 &status.done; &status.done;
Update sysconf(3) for POSIX.1-2001. &a.wollman; 18 September 2002 &status.done; &status.n-a;
Restore insque(), lsearch(), remque() from libcompat. &a.robert; 16 November 2002 &status.done; &status.n-a;
Implement fpclassify(). &a.das;,
&a.mike;
8 February 2003 &status.done; &status.n-a;
Implement isfinite(), isinf(), isnan(), isnormal(). &a.das; 17 February 2003 &status.done; &status.n-a;
Implement isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(). &a.das; 17 February 2003 &status.done; &status.n-a;
Implement signbit(). &a.mike; 17 February 2003 &status.done; &status.n-a;
Implement sockatmark(). &a.fenner; 23 December 2002 &status.done; &status.new;
Implement wordexp() and wordfree(). &a.tjr; 31 December 2002 &status.done; &status.new;
Implement grantpt(), posix_openpt(), ptsname(), unlockpt(). &a.ryany; 4 February 2003 &status.done; &status.new;
Implement getgrgid_r(), getgrnam_r(). &a.wes; 20 December 2001 &status.wip; &status.blank;
Implement new functions that appear in <complex.h>. &a.markm; 6 February 2002 &status.wip; &status.blank;
Implement waitid(2). &a.mike; 27 May 2002 &status.wip; &status.blank;
Add floating-point support for the (') modifier in &man.printf.3; &a.phantom; 13 June 2002 &status.wip; &status.blank;
Add new conversion specifiers (%a and %A) to &man.printf.3;. &a.mkm; 13 June 2002 &status.wip; &status.blank;
Implement the utmpx family of functions. &a.robert; 28 June 2002 &status.wip; &status.blank;
Implement ftw() and nftw() in terms of fts(). &a.mkm; 16 August 2002 &status.wip; &status.blank;
Add restrict type-qualifier to functions that require it. &a.robert; 16 August 2002 &status.wip; &status.blank;
Implement iconv(), iconv_close(), iconv_open(). &a.tjr; 8 October 2002 &status.wip; &status.blank;
Implement getpwnam_r(), getpwuid_r(). &a.leimy2k; 8 February 2003 &status.wip; &status.blank;
Transition to vendor (Netlib) source for strtod.c. &a.das; 27 February 2003 &status.wip; &status.blank;
Import Netlib's gdtoa (strtof, strtold, etc.). &a.das; 27 February 2003 &status.wip; &status.blank;
Implement new functions that appear in <fenv.h>. &a.fenner; 14 November 2001 &status.new; &status.blank;
Make non thread-safe functions thread-safe.   22 October 2001 &status.new; &status.blank;
Make functions async-cancel safe.   22 October 2001 &status.new; &status.blank;
Implement C99 macros fpclassify(), isfinite(), isinf(), isnan(), isnormal(), signbit().   13 April 2002 &status.new; &status.blank;
Implement C99 macros isgreater(), isgreaterequal(), isless(), islessequal(), islessgreater(), isunordered().   13 April 2002 &status.new; &status.blank;
Implement new hex floating-point format types (%a/%A) in &man.scanf.3;.   20 April 2002 &status.new; &status.blank;
Implement C99 rounding functions lrint(), lrintf(), lrintl(), llrint(), llrintf(), llrintl().   30 July 2002 &status.new; &status.blank;
Implement posix_madvise(), posix_mem_offset(), posix_typed_mem_get_info(), posix_typed_mem_open(), posix_memalign().   23 August 2002 &status.new; &status.blank;
Obtain a64l(), l64a(), and l64a_r() (extention) from NetBSD.   9 September 2002 &status.new; &status.blank;
Decide whether to implement legacy functions: ecvt(), fcvt(), gcvt().   9 September 2002 &status.new; &status.blank;
Add SIG_HOLD support to signal(3)/sigaction(2).   13 October 2002 &status.new; &status.blank;
Implement RTS functions sigqueue(), sigtimedwait(), sigwaitinfo().   13 October 2002 &status.new; &status.blank;
Update fmtcheck(3) to recognize new printf(3) flags.   16 October 2002 &status.new; &status.blank;


Task Responsible Last Updated Status
5.0 4.x
Headers
Fix prototypes and hide non-conforming portions of header <arpa/inet.h>. &a.mike; 19 February 2002 &status.done; &status.n-a;
Implement the <stdint.h> and <inttypes.h> headers. &a.mike; 1 March 2002 &status.done; &status.n-a;
Add exposure control primitives to <sys/cdefs.h> (originally developed by &a.wollman). &a.mike; 1 April 2002 &status.done; &status.n-a;
Implement <sys/_types> to store shared MI types. &a.mike; 1 April 2002 &status.done; &status.n-a;
Implement header <strings.h>, and work out compatibility issues with header <string.h>. &a.mike; 4 April 2002 &status.done; &status.n-a;
Hide non-conforming portions, add missing types to <sys/un.h>. &a.mike; 19 April 2002 &status.done; &status.n-a;
Remove pollution and add missing macros to <netinet/in.h> and <netinet6/in6.h>. &a.mike; 23 May 2002 &status.done; &status.n-a;
Hide non-conforming portions of <sys/wait.h>. &a.mike; 3 June 2002 &status.done; &status.n-a;
Hide non-conforming portions of <pwd.h>. &a.mike; 9 June 2002 &status.done; &status.n-a;
Create <sys/statvfs.h> based on POSIX spec. &a.wollman; 14 June 2002 &status.done; &status.n-a;
Add nfds_t and resolve other issues in <poll.h> (actually <sys/poll.h>). &a.mike; 8 July 2002 &status.done; &status.n-a;
Implement the XSI header, <cpio.h>. &a.mike; 1 August 2002 &status.done; &status.n-a;
Implement <fmtmsg.h>. &a.mike; 8 August 2002 &status.done; &status.n-a;
Implement <ulimit.h>. &a.mkm; 8 August 2002 &status.done; &status.n-a;
Merge <machine/ansi.h> and <machine/types> into a new common header <machine/_types.h>. &a.bde;,
&a.mike;
23 August 2002 &status.done; &status.n-a;
Fix namespaces, add missing types in <sys/mman.h>. &a.mike; 29 August 2002 &status.done; &status.n-a;
Fix namespace issues in <ctype.h>. &a.mike; 9 September 2002 &status.done; &status.n-a;
Fix namespace issues in <dlfcn.h>. &a.wollman;,
&a.mike;
11 September 2002 &status.done; &status.n-a;
Fix namespace issues in <fcntl.h>. &a.mike; 18 September 2002 &status.done; &status.n-a;
Fix namespace issues in <fnmatch.h>. &a.mike; 18 September 2002 &status.done; &status.n-a;
Fix namespace issues in <grp.h>. &a.mike; 18 September 2002 &status.done; &status.n-a;
Fix namespace issues in <langinfo.h>. &a.mike; 18 September 2002 &status.done; &status.n-a;
Add va_copy() macro to <stdarg.h> (actually <machine/stdarg.h>). &a.mike; 20 September 2002 &status.done; &status.n-a;
Fix namespaces issues in <stdlib.h>. &a.wollman; 21 September 2002 &status.done; &status.n-a;
Add new pathname, system variable, and POSIX option constants to <unistd.h>. &a.wollman; 21 September 2002 &status.done; &status.n-a;
Merge two conflicting math.h headers into a single header. &a.bde; 2 October 2002 &status.done; &status.n-a;
Fix namespace issues in <net/if.h>. &a.mike; 2 October 2002 &status.done; &status.n-a;
Fix namespace issues in <netinet/tcp.h>. &a.mike; 2 October 2002 &status.done; &status.n-a;
Add size_t, fix regoff_t in <regex.h>. &a.mike; 2 October 2002 &status.done; &status.n-a;
Fix namespace issues in <sched.h> (actually <posix4/sched.h>). &a.mike; 5 October 2002 &status.done; &status.n-a;
Fix namespace issues in <semaphore.h> (actually <posix4/semaphore.h>). &a.mike; 5 October 2002 &status.done; &status.n-a;
Fix namespace issues in <setjmp.h> (actually <machine/setjmp.h>). &a.mike; 5 October 2002 &status.done; &status.n-a;
Fix namespace issues in <stdio.h>. &a.wollman; 7 October 2002 &status.done; &status.n-a;
Add missing members to struct lconv in <locale.h>. &a.tjr; 9 October 2002 &status.done; &status.n-a;
Fix namespace issues, add missing types in <sys/socket.h>. &a.mike; 13 October 2002 &status.done; &status.n-a;
Fix namespace issues, add missing types in <sys/uio.h>. &a.mike; 13 October 2002 &status.done; &status.n-a;
Fix namespace issues in <signal.h> (also <sys/signal.h> and <machine/signal.h>). &a.mike; 13 October 2002 &status.done; &status.n-a;
Eliminate <sys/_posix.h>. &a.mike; 16 October 2002 &status.done; &status.n-a;
Implement the header <wordexp.h>. &a.tjr; 31 December 2002 &status.done; &status.new;
Implement new types and prototypes in header <complex.h>. &a.markm; 6 February 2002 &status.wip; &status.blank;
Hide non-conforming portions, add missing types to <sys/types.h>. &a.mike; 1 April 2002 &status.wip; &status.blank;
Reduce namespace pollution and add missing typedefs in <unistd.h> &a.mike; 25 March 2002 &status.wip; &status.blank;
Implement <utmpx.h> to eventually replace <utmp.h>. &a.robert; 28 June 2002 &status.wip; &status.blank;
Implement <ftw.h>. &a.mkm; 16 August 2002 &status.wip; &status.blank;
Add missing errnos to <errno.h> (actually <sys/errno.h>). &a.mike; 11 September 2002 &status.wip; &status.blank;
Implement the header <iconv.h>. &a.tjr; 7 October 2002 &status.wip; &status.blank;
Evaluate missing features of <math.h>. &a.ryany; 23 December 2002 &status.wip; &status.blank;
Hide non-conforming portions, add missing types to <sys/stat.h>. &a.mike; 27 February 2003 &status.wip; &status.blank;
Implement the header <fenv.h>. &a.fenner; 14 November 2001 &status.new; &status.blank;
Add missing constants FLT_EVAL_METHOD, DECIMAL_DIG to <float.h> (actually <machine/float.h>).   17 September 2002 &status.new; &status.blank;
Fix sizes of members in glob_t, add restrict type-qualifiers in <glob.h>.   20 September 2002 &status.new; &status.blank;
Decide whether to remove const type-qualifiers in <libgen.h>.   20 September 2002 &status.new; &status.blank;
Add missing constants in <limits.h>.   20 September 2002 &status.new; &status.blank;
Fix sizes of members in datum, add missing types, fix namespace issues in <ndbm.h>.   2 October 2002 &status.new; &status.blank;
Fix size of si_addrlen in struct addrinfo, add missing types, fix namespace issues in <netdb.h>.   2 October 2002 &status.new; &status.blank;
Evaluate missing features of <pthread.h>.   2 October 2002 &status.new; &status.blank;
Add missing members to struct sigevent, fix type of ss_sp in struct sigstack, add SIGEV_THREAD constant, add ucontext_t and mcontext_t in <sys/signal.h>.   13 October 2002 &status.new; &status.blank;
Fix types for members of struct ipc_perm in <sys/ipc.h>.   16 October 2002 &status.new; &status.blank;
Implement <tgmath.h>.   23 December 2002 &status.new; &status.blank;


Task Responsible Last Updated Status
5.0 4.x
Miscellaneous
Obtain a copy of Proc. ACM SIGPLAN '90 (required for &man.printf.3; %'f). &a.fenner; 9 November 2001 &status.done; &status.n-a;
Upgrade system compiler to GCC 3.1. &a.obrien; 15 May 2002 &status.done; &status.n-a;
Add regression test for each function.   17 November 2001 &status.new; &status.blank;
Merge sys/posix4/* into regular kernel hierachy, and remove sys/posix4.   21 September 2002 &status.new; &status.blank;
Open an Aardvark on how to deal with no newline on the last line of a file in diff(1).   25 November 2002 &status.new; &status.blank;
Globally rename the `lint' macro to something in the implementation namespace so it can safely modify the implementation (reference).   25 November 2002 &status.new; &status.blank;
Globally rename the `LOCORE' macro to something in the implementation namespace so it can safely modify the implementation (reference).   25 November 2002 &status.new; &status.blank;


Task Responsible Last Updated Status
5.0 4.x
Utility Conformance
Add -o option and base64 decoding to the uudecode utility. &a.jmallett; 26 March 2002 &status.done; &status.done;
Add -m option and base64 encoding to the uuencode utility. &a.jmallett; 26 March 2002 &status.done; &status.done;
Require atleast one file argument in paste(1). (PR: 36074) &a.tjr; 1 April 2002 &status.done; &status.done;
Add the -i option to the patch utility. &a.jmallett; 9 April 2002 &status.done; &status.done;
Add -r and -t options to the at utility. &a.joe.halpin; 16 April 2002 &status.done; &status.n-a;
Add the -f and -p options to the pr utility. (PR: 36243) &a.tjr; 16 April 2002 &status.done; &status.done;
Add the -s option to the m4 utility. (PR: 36075) &a.tjr; 24 April 2002 &status.done; &status.done;
Make printf(1) utility conform to POSIX.2 (1992). (PR: 35616) &a.tjr; 2 May 2002 &status.done; &status.done;
Correct output stream and exit status of the mesg(1) utility. &a.tjr; 6 May 2002 &status.done; &status.n-a;
Implement the asa utility. (PR: 36130) &a.tjr; 15 May 2002 &status.done; &status.n-a;
Add the tabs utility. (PR: 36126) &a.tjr; 20 May 2002 &status.done; &status.n-a;
Restore sccs utility from CVS attic. &a.jmallett; 22 May 2002 &status.done; &status.n-a;
Make expr(1) conform to POSIX.1-2001. &a.wollman; 22 May 2002 &status.done; &status.n-a;
Add the newgrp utility. (PR: 36190) &a.tjr; 28 May 2002 &status.done; &status.n-a;
Fix ctags(1)'s -t option; fix ordering with -x. &a.tjr; 2 June 2002 &status.done; &status.n-a;
Add -L option to the pwd utility. &a.tjr; 20 June 2002 &status.done; &status.done;
Fix exit status of the env(1) utility. &a.tjr; 20 June 2002 &status.done; &status.done;
Add the -b and -s option to the fold utility. (PR: 36245) &a.tjr; 20 June 2002 &status.done; &status.done;
Add -I and -L options to the xargs utility. &a.jmallett; 20 June 2002 &status.done; &status.done;
Implement the csplit utility. (PR: 36191) &a.tjr; 20 June 2002 &status.done; &status.n-a;
Fix exit status of the nice(1) utility. &a.tjr; 20 June 2002 &status.done; &status.done;
Add -n option to the nice utility. &a.pavalos; 20 June 2002 &status.done; &status.done;
Add -n option and resolve other issues in the renice utility. (PR: 36950) &a.pavalos;,
&a.maxim;
20 June 2002 &status.done; &status.done;
Add -t option to unexpand(1) utility. (PR: 35621) &a.tjr; 20 June 2002 &status.done; &status.done;
Make the uniq(1) utility accept `-' as a stdin specifier. &a.tjr; 28 June 2002 &status.done; &status.done;
Improve join(1)'s POSIX.1-2001 conformance. (PR: 36072) &a.tjr; 28 June 2002 &status.done; &status.done;
Add -C option to the tr utility. &a.tjr; 28 June 2002 &status.done; &status.n-a;
Implement the -m, -p, and -x options in the ls utility. &a.mkm; 8 July 2002 &status.done; &status.done;
Reimplement the who utility. (PR: 36128) &a.tjr; 14 July 2002 &status.done; &status.done;
Fix exit status, stdout/stderr confusion, and add `-' stdin support to the compress(1) utility. &a.tjr; 17 July 2002 &status.done; &status.done;
Add the -s, -A, -j, -N, and -t options to the od utility. (PR: 36783) &a.tjr; 24 July 2002 &status.done; &status.done;
Add -a option to the split utility. &a.tjr; 30 July 2002 &status.done; &status.done;
Add -m option to the wc utility. &a.tjr; 29 August 2002 &status.done; &status.done;
Add -L and -P options to the cd utility (shell built-in). &a.tjr; 7 October 2002 &status.done; &status.done;
Reimplement command(1) (shell built-in). &a.tjr; 7 October 2002 &status.done; &status.done;
Add the c99 utility (similar to c89). (PR: 36087) &a.tjr; 8 October 2002 &status.done; &status.n-a;
Update getconf(1) for POSIX.1-2001. &a.wollman; 12 November 2002 &status.done; &status.done;
Add the pathchk utility. &a.tjr; 12 November 2002 &status.done; &status.done;
Document the -n option in the echo utility as being implementation-defined. &a.schweikh; 8 May 2003 &status.done; &status.done;
Add missing options to the mailx utility. &a.mikeh; 22 December 2001 &status.wip; &status.blank;
Add missing components to the jobs utility. &a.mkm; 5 March 2002 &status.wip; &status.blank;
Work out conflicting -t option in the df utility. &a.tjr; 22 April 2002 &status.wip; &status.blank;
Add unimplemented features to the sh utility. &a.tjr; 20 May 2002 &status.wip; &status.blank;
Implement the -m, -w, and -t options in the lp utility. &a.gad; 23 May 2002 &status.wip; &status.blank;
Implement/import the SCCS development utilities: admin, delta, get, prs, rmdel, sact, unget, val &a.jmallett; 23 May 2002 &status.wip; &status.blank;
Investigate adopting some of the POSIX options in the ps utility. &a.jmallett; 6 June 2002 &status.wip; &status.blank;
Add missing options and resolve conflicting options in the nm utility. &a.robert; 2 August 2002 &status.wip; &status.blank;
Implement the iconv utility. &a.tjr; 9 October 2002 &status.wip; &status.blank;
Implement the locale and localedef utilities. &a.phantom; 16 October 2002 &status.wip; &status.blank;
Add -C and -T options to the ar utility.   30 November 2001 &status.new; &status.blank;
Investigate importing the cflow utility from the ports collection.   30 November 2001 &status.new; &status.blank;
Add -p, -v, and -V options to the command utility (shell built-in).   30 November 2001 &status.new; &status.blank;
Bring the cp utility up to conformance.   30 November 2001 &status.new; &status.blank;
Implement the cxref utility.   30 November 2001 &status.new; &status.blank;
Add the -d, -h, and -M options and fix conflicting -i option in the file utility.   30 November 2001 &status.new; &status.blank;
Bring the make utility up to conformance.   30 November 2001 &status.new; &status.blank;
Add -p option the more utility.   30 November 2001 &status.new; &status.blank;
Add the qsub utility.   30 November 2001 &status.new; &status.blank;
Make printf(1) utility conform to SUSv3.   23 April 2002 &status.new; &status.blank;
Implement the fuser utility. (PR: 36076)   4 February 2003 &status.new; &status.blank;


Task Responsible Last Updated Status
5.0 4.x
Wide Character/String Support
Implement basic support for wide character I/O: getwc(), fgetwc(), getwchar(), putwc(), fputwc(), putwchar(), ungetwc(), fwide(). &a.tjr; 16 August 2002 &status.done; &status.n-a;
Add stubs for reentrant wc handling functions btowc(), mbrlen(), mbrtowc(), mbsrtowcs(), wcrtomb(), wcsrtombs(), wctob(), wctype(). &a.tjr; 23 August 2002 &status.done; &status.n-a;
Add stubs for reentrant wc handling functions iswalnum(), iswalpha(), iswcntrl(), iswctype(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(). &a.tjr; 23 August 2002 &status.done; &status.n-a;
Implement wcwidth(). &a.keichii; 23 August 2002 &status.done; &status.n-a;
Implement wcswidth(). &a.ache; 23 August 2002 &status.done; &status.n-a;
Implement wcstok(). &a.tjr; 9 September 2002 &status.done; &status.n-a;
Implement wcstod(), wcstol(), wcstoul(). &a.tjr; 15 September 2002 &status.done; &status.n-a;
Implement wcsftime(). &a.tjr; 15 September 2002 &status.done; &status.n-a;
Implement fwprintf(), swprintf(), vfwprintf(), vswprintf(), vwprintf(), wprintf(). &a.tjr; 23 September 2002 &status.done; &status.n-a;
Implement fwscanf(), swscanf(), vfwscanf(), vswscanf(), vwscanf(), wscanf(). &a.tjr; 23 September 2002 &status.done; &status.n-a;
Implement wcstoimax(), wcstoll(), wcstoumax(), wcstoull(). &a.tjr; 23 September 2002 &status.done; &status.n-a;
Implement wide character format types (%C, %S, %lc, %ls) in &man.printf.3;. &a.tjr; 16 October 2002 &status.done; &status.n-a;
Implement wcscoll(), wcsxfrm(). &a.tjr; 7 October 2002 &status.wip; &status.blank;
Implement wide character format types (%C, %S, %lc, %ls) in &man.scanf.3;. &a.tjr; 18 September 2002 &status.new; &status.blank;


Legend
&status.new; Not yet started
&status.blocked; Blocked awaiting completion of another task
&status.wip; Work in progress
&status.done; Task completed
&status.n-a; Not planned

News

The remainder of this page is structured as a reverse-chronological log.

31 December 2002 13 December 2002 9 October 2002 16 August 2002 1 August 2002 22 May 2002 3 March 2002 30 January 2002 14 December 2001 6 December 2001 28 November 2001 19 October 2001 10 October 2001

The original layout for this web page was borrowed from the FreeBSD SMPng Project. BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.

&footer; diff --git a/en/projects/newbies.sgml b/en/projects/newbies.sgml index 1ce232aa2f..e8640d2702 100644 --- a/en/projects/newbies.sgml +++ b/en/projects/newbies.sgml @@ -1,249 +1,249 @@ - + %includes; ]> &header;

The following resources are some of those which FreeBSD newbies have found most helpful when learning to use FreeBSD. Please send corrections and additions to FreeBSD-Newbies@FreeBSD.org.

Using the FreeBSD web site

This web site is the main source of up to date information about FreeBSD. Newbies have found the following pages particularly helpful:

Learning about FreeBSD

-

Learning about UNIX

+

Learning about &unix;

Many of the problems we have as newbies come from being unfamiliar with the UNIX commands needed to fix our FreeBSD problems. Without a UNIX background you'll be faced with two things to learn at once. Fortunately a lot of resources are available to make this easier.

Learning about the X Window System

The X Window System is used with a number of operating systems, including FreeBSD. The documentation for X can be found at The XFree86 Project, Inc. Beware, much of this documentation is reference material which is likely to be difficult for newcomers to digest.

Helping other people

Everyone has something to contribute to the FreeBSD community, even newbies! Some are busy working with the new advocacy group and some have become involved with the Documentation Project as reviewers. Other FreeBSD newbies might have particular skills and experiences to share, either computer related or not, or just want to meet new newbies and make them feel welcome. There's always people around who help others simply because they like to. Write to FreeBSD Newbies for more information.

Friends who run FreeBSD are a great resource. No book can replace chatting on the phone or across a pizza with someone who has the same interests, enjoys similar accomplishments, and faces the same challenges. If you don't have many friends who use FreeBSD, consider using your old FreeBSD CDs to create some more :-)

User groups are good places to meet other FreeBSD users. If there's not one nearby, maybe you could start one.

Before talking to real humans about your new skills, you might want to check the Pronunciation Guide and the Jargon File :-)

On line we have the FreeBSD-Newbies mailing list for non-technical discussions about matters of interest to newbies. Another mailing list, FreeBSD-Questions, answers our questions about using FreeBSD.

&footer; diff --git a/en/projects/projects.sgml b/en/projects/projects.sgml index 0ea80758ba..b2a4a7a382 100644 --- a/en/projects/projects.sgml +++ b/en/projects/projects.sgml @@ -1,489 +1,489 @@ - + %includes; ]> &header;

In addition to the mainstream development path of FreeBSD, a number of developer groups are working on the cutting edge to expand FreeBSD's range of applications in new directions. Follow the links below to learn more about these exciting projects.

If you miss a project please send the URL and a short description (3-10 lines) to www@FreeBSD.ORG

In addition, some of these projects regularly submit status reports, which can be viewed on the status reports page.

Documentation

Applications

Networking

File system

Kernel, security

Device drivers

Architecture

Misc

&footer; diff --git a/en/search/search.sgml b/en/search/search.sgml index f9edea10b7..c948496e38 100644 --- a/en/search/search.sgml +++ b/en/search/search.sgml @@ -1,556 +1,556 @@ - + %includes; ]> &header;

FreeBSD Search Services


Web pages (including FAQ and Handbook)

Search for:

Note: Use the operators AND or NOT to limit your search. Look here for more hints.


Limit the number of results to


Mailing list archives

The mailing list archive indexes are now updated weekly!

An alternative way to read the mailing lists archives is to use the Mailman/Pipermail list archive (note that this archive only carries messages from March 2003 onward).

The mailing lists (as well as many others) have also been archived by GeoCrawler.

Search for:

Note: Use the operators AND or NOT to limit your search. Look here for more hints.


Limit the number of results to sort by Search

In archive(s):

Note: Searching more than three or four archives at once may yield inaccurate results.

General Archives

Advocacy FreeBSD Evangelism
Announce Important events / milestones
Chat Random topics (sometimes) related to FreeBSD
Jobs FreeBSD related job announcements and resumes
Newbies New FreeBSD users activities and discussion
Questions General questions
Security Notifications Announcements regarding FreeBSD security issues (including, e.g., CERT notices)
User-Groups A forum for FreeBSD user groups

System Use and Administration

Bugs Reports and discussion of bugs
Cluster Discussions related to using FreeBSD in clustered environments
Hardware Discussions concerning hardware as it relates to FreeBSD
ISP Discussions for ISPs using FreeBSD
Performance Discussions of the performance of FreeBSD under high load or extreme conditions
Security FreeBSD computer security issues (DES, Kerberos, etc.)
Stable Discussion of the FreeBSD-stable branch of the development tree

Developer

+ value="freebsd-java"> &java;
Afs Porting and using AFS (the Andrew File System) from CMU/Transarc
Alpha Porting FreeBSD to the DEC Alpha
Arch Architecture and design discussions
ARM Porting FreeBSD to the StrongArm
ATM Using ATM networking with FreeBSD
Audit Source code audit project
Binup Design and development of the binary update system
Bugbusters Coordination of the Problem Report handling effort
Commit (all) All Changes made to all FreeBSD source trees
Commit (doc) Changes made to the FreeBSD documents source tree
Commit (ports) Changes made to the FreeBSD ports source tree
Commit (projects) Changes made to the FreeBSD projects source tree
Commit (src) Changes made to the FreeBSD main source tree
Config Development of FreeBSD installation and configuration tools
Current Use of FreeBSD-current sources
CVSweb Technical discussions about use, development and maintenance of FreeBSD-CVSweb
Database Discussing database use and development under FreeBSD
Doc Discussions concerning documentation
Emulation Emulating other systems on FreeBSD
Firewire Design and implementation of a Firewire (aka IEEE 1394 aka iLink) subsystem for FreeBSD
Fs Discussions concerning FreeBSD filesystems
Gnome Discussions concerning the FreeBSD GNOME project
Hackers General technical discussions
I18n FreeBSD Internationalization
i386 i386-specific issues for FreeBSD
ia32 FreeBSD on the IA32 platform
ia64 Porting FreeBSD to Intel's upcoming IA64 systems
ipfw Technical discussion concerning the redesign of the IP firewall code
ISDN Development of ISDN support for FreeBSD
Java JDK porting and application development
libh The second generation installation and package system
MIPS Porting FreeBSD to MIPS
Multimedia Discussions about FreeBSD as a multimedia platform
Mobile Using FreeBSD in a mobile environment
Mozilla Porting mozilla to FreeBSD
Net Networking discussion and TCP/IP source code
New Bus Technical discussions on Bus Architecture
OpenOffice Discussions concerning the FreeBSD OpenOffice and StarOffice ports
Platforms Cross-platform FreeBSD issues (non-Intel FreeBSD ports)
Policy FreeBSD core team policy decisions.
Ports Bugs Bug reports concerning FreeBSD's ports collection
Ports Discussions concerning FreeBSD's ports collection
PPC Porting FreeBSD to the PowerPC
QA Discussion of quality assurance issues
Realtime Development of realtime extensions to FreeBSD
SCSI Discussions about FreeBSD's SCSI support
Small Using FreeBSD in embedded applications
SMP FreeBSD on multi-processor platforms
SPARC64 Porting FreeBSD to the SPARC64
Standards FreeBSD Conformance to the C99 and the POSIX standards
Threads Discussion about threading models in FreeBSD, including KSE and others
Tokenring Support Token Ring in FreeBSD

Limited lists

Hubs People running mirror sites (infrastructural support)
Install Installation system development
WWW Web site maintainers

&footer; diff --git a/en/security/security.sgml b/en/security/security.sgml index 8e2f57eecf..14b37733e7 100644 --- a/en/security/security.sgml +++ b/en/security/security.sgml @@ -1,892 +1,892 @@ - + %includes; ]> - + &header;

Introduction

This web page is designed to assist both new and experienced users in the area of FreeBSD security. FreeBSD takes security very seriously and is constantly working on making the OS as secure as possible.

Here you will find additional information, or links to information, on how to protect your system against various types of attack, on whom to contact if you find a security-related bug, and so on. There is also a section on the various ways that the systems programmer can become more security conscious so that he is less likely to introduce vulnerabilities.

Table of Contents

The FreeBSD Security Officer and the Security Officer Team

To better coordinate information exchange with others in the security community, FreeBSD has a focal point for security-related communications: the FreeBSD Security Officer.

If you need to contact the FreeBSD Project about a possible security issue, you should therefore send mail to the Security Officer with a description of what you have found and the type of vulnerability it represents.

In order that the FreeBSD Project may respond to vulnerability reports in a timely manner, there are four members of the Security Officer mail alias: the Security Officer, the Deputy Security Officer, and two Core Team members. Therefore, messages sent to the <security-officer@FreeBSD.org> mail alias are currently delivered to:

Jacques Vidrine <nectar@FreeBSD.org> Security Officer
Chris Faulhaber <jedgar@FreeBSD.org> Deputy Security Officer
Robert Watson <rwatson@FreeBSD.org> FreeBSD Core Team member, Release Engineering liaison,
TrustedBSD Project liaison, system security architecture expert
Warner Losh <imp@FreeBSD.org> FreeBSD Core Team liaison, Security Officer Emeritus

The Security Officer is supported by the Security Officer Team <security-team@FreeBSD.org>, a group of committers selected by the Security Officer. The current make up of the team is as follows:

Bill Fumerola <billf@FreeBSD.org> FreeBSD Infrastructure liaison
Daniel Harris <dannyboy@FreeBSD.org> Doc and ports committer
Trevor Johnson <trevor@FreeBSD.org> ports committer
Kris Kennaway <kris@FreeBSD.org> Port Manager liaison, Security Officer Emeritus
Wes Peters <wes@FreeBSD.org> FreeBSD Core Team member; former security software researcher and developer for the US Air Force, Axent Technologies/Symantec, Intel, and Alcatel Internetworking.
Guido van Rooij <guido@FreeBSD.org> Security Officer Emeritus
Dag-Erling Smorgrav <des@FreeBSD.org>

Please use the Security Officer PGP key to encrypt your messages to the Security Officer when appropriate.

Information handling policies

As a general policy, the FreeBSD Security Officer favors full disclosure of vulnerability information after a reasonable delay to permit safe analysis and correction of a vulnerability, as well as appropriate testing of the correction, and appropriate coordination with other affected parties.

The Security Officer will notify one or more of the FreeBSD Cluster Admins of vulnerabilities that put the FreeBSD Project's resources under immediate danger.

The Security Officer may bring additional FreeBSD developers or outside developers into discussion of a submitted security vulnerability if their expertise is required to fully understand or correct the problem. Appropriate discretion will be exercised to minimize unnecessary distribution of information about the submitted vulnerability, and any experts brought in will act in accordance of Security Officer policies. In the past, experts have been brought in based on extensive experience with highly complex components of the operating system, including FFS, the VM system, and the network stack.

If a FreeBSD release process is underway, the FreeBSD Release Engineer may also be notified that a vulnerability exists, and its severity, so that informed decisions may be made regarding the release cycle and any serious security bugs present in software associated with an up-coming release. If requested, the Security Officer will not share information regarding the nature of the vulnerability with the Release Engineer, limiting information flow to existence and severity.

The FreeBSD Security Officer has close working relationships with a number of other organizations, including third-party vendors that share code with FreeBSD (the OpenBSD and NetBSD projects, Apple, and other vendors deriving software from FreeBSD, as well as the Linux vendor security list), as well as organizations that track vulnerabilities and security incidents, such as CERT. Frequently vulnerabilities may extend beyond the scope of the FreeBSD implementation, and (perhaps less frequently) may have broad implications for the global networking community. Under such circumstances, the Security Officer may wish to disclose vulnerability information to these other organizations: if you do not wish the Security Officer to do this, please indicate so explicitly in any submissions.

Submitters should be careful to explicitly document any special information handling requirements.

If the submitter of a vulnerability is interested in a coordinated disclosure process with the submitter and/or other vendors, this should be indicated explicitly in any submissions. In the absence of explicit requests, the FreeBSD Security Officer will select a disclosure schedule that reflects both a desire for timely disclosure and appropriate testing of any solutions. Submitters should be aware that if the vulnerability is being actively discussed in public forums (such as bugtraq), and actively exploited, the Security Officer may choose not to follow a proposed disclosure timeline in order to provide maximum protection for the user community.

Submitters should be aware that the FreeBSD Project is an open source project, and source revision control information for every change made to the FreeBSD source tree is publicly accessible. If a disclosure schedule is provided, it should take into account both the official release of advisory, patch, and update information, as well as initial inclusion of fixes in the FreeBSD source tree. There is necessarily a lag between the inclusion of fixes in the tree and the generation and releases of advisories, patches, and binary updates, as the source control system is used to generate them.

Submissions may be protected using PGP. If desired, responses will also be protected using PGP.

FreeBSD Security Advisories

The FreeBSD Security Officer provides security advisories for several branches of FreeBSD development. These are the -STABLE Branches and the Security Branches. (Advisories are not issued for the -CURRENT Branch.)

Each branch is supported by the Security Officer for a limited time only, typically through 12 months after the release. The estimated lifetimes of the currently supported branches are given below. The Estimated EoL (end-of-life) column gives the earliest date on which that branch is likely to be dropped. Please note that these dates may be extended into the future, but only extenuating circumstances would lead to a branch's support being dropped earlier than the date listed.

Branch Release Estimated EoL
RELENG_4 n/a December 31, 2003
RELENG_4_6 4.6-RELEASE May 31, 2003
RELENG_4_7 4.7-RELEASE September 30, 2003
RELENG_4_8 4.8-RELEASE March 31, 2004
RELENG_5_0 5.0-RELEASE June 30, 2003

Older releases are not maintained and users are strongly encouraged to upgrade to one of the supported releases mentioned above.

Like all development efforts, security fixes are first brought into the FreeBSD-current branch. After a couple of days and some testing, the fix is retrofitted into the supported FreeBSD-stable branch(es) and an advisory is then sent out.

Some statistics about advisories released during 2002:

Advisories are sent to the following FreeBSD mailing lists:

Advisories are always signed using the FreeBSD Security Officer PGP key and are archived, along with their associated patches, at our FTP CERT repository. At the time of this writing, the following advisories are currently available (note that this list may be a few days out of date - for the very latest advisories please check the FTP site):

FreeBSD 4.8-RELEASE released. FreeBSD 5.0-RELEASE released. FreeBSD 4.7-RELEASE released. FreeBSD 4.6.2-RELEASE released. FreeBSD 4.6-RELEASE released. FreeBSD 4.5-RELEASE released. FreeBSD 4.4-RELEASE released. FreeBSD 4.3-RELEASE released.

FreeBSD Security Mailing Lists Information

If you are administering or using any number of FreeBSD systems, you should probably be subscribed to one or more of the following lists:

freebsd-security General security related discussion
freebsd-security-notifications Security notifications (low-volume moderated list)

Secure Programming Guidelines

A useful auditing tool is the its4 port, located in /usr/ports/security/its4/. This is an automated C code auditor which highlights potential trouble-spots in the code. It is a useful first-pass tool, but should not be relied upon as being authoritative, and a complete audit should include human examination of the entire code.

For more information on secure programming techniques and resources, see the How to Write Secure Code resource center.

FreeBSD Security Tips and Tricks

There are several steps one must take to secure a FreeBSD system, or -in fact any Unix system:

+in fact any &unix; system:

There is also a FreeBSD Security How-To available which provides some advanced tips on how to improve security of your system. You can find it at http://www.FreeBSD.org/~jkb/howto.html.

Security is an ongoing process. Make sure you are following the latest developments in the security arena.

What to do when you detect a security compromise

Other Related Security Information

&footer diff --git a/en/smp/index.sgml b/en/smp/index.sgml index eab818578b..f666380644 100644 --- a/en/smp/index.sgml +++ b/en/smp/index.sgml @@ -1,1911 +1,1911 @@ - + %includes; Done"> In progress"> Stalled"> Not Started"> Resolved"> Unresolved"> %developers; ]> &header;

Contents

Project Goal

The FreeBSD SMP project, often referred to as SMPng (SMP next generation), is focused on implementing fine-grained SMP support for the FreeBSD kernel. It debuted in 5.0-RELEASE in January of 2003. Due to FreeBSD's history, this is much like trying to fit a square peg into a round hole, and as such, the intermediate results aren't pretty in many ways. We are specifically not attempting to rewrite the kernel from scratch, nor are we on a crusade to fix all the architectural nits currently present in the kernel. This is a pragmatic project rather than a theoretical one.

Project Plan

This web page contains information related to the effort to improve SMP support in FreeBSD. In general, this project uses what it can from the BSD/OS 5.0 development kernel, and re-implements what cannot be directly used due to divergence in the code bases.

As with any free software project, a detailed schedule is not possible. We expect to have significant performance and stability issues that need to be worked through over the first several months of the project, though every effort will be made to keep -current running as well as possible.

The task list below is not intended to be complete, but does represent a set of relevant and/or important components of the overall work. The "Responsible" field identifies a developer who has expressed willingness to be responsible for completing the identified task; this doesn't preclude others working on it, but suggests that coordination with the responsible party might be appropriate so as to avoid unnecessary duplication of work, and to maximize forward progress. If beginning work on a new area of substantial size, or one that appears unclaimed, it may be worth dropping an e-mail to the FreeBSD SMP mailing list to see if any progress has been made.

The definition of the date field varies depending on the status of a task. For completed tasks, it refers to the date completed or reported completed. For in-progress tasks, it refers to the date of the last update of the entry. For stalled tasks, it refers to the date that the task was declared stalled. For new tasks, it refers to the date the task was added to the list.

Locking down of individual device drivers is tracked at the busdma and SMPng driver conversion webpage.

Tasks are sorted first by status, then by date.

Resources and Links

Subsystems and Staffing

This is an incomplete list of high-level kernel subsystems and current, active staff working on SMP architecture and stability.

Subsystem Status Last updated Staffing
Newbus &status.wip; &a.imp;
VM &status.wip; 5 February 2003 &a.alc;
Buffer cache &status.wip; 8 February 2003 &a.jeff;, &a.phk;
VFS &status.wip; &a.jeff;
Processes and thread operations &status.wip; 5 May 2003 &a.jhb;
Scheduler &status.wip; 5 February 2003 &a.jhb;
GEOM &status.done; 5 February 2003 &a.phk;
File descriptors &status.done; 5 February 2003 &a.alfred;, &a.tanimura;
TTY subsystem &status.new;
Pipe IPC &status.done; (except for VM optimizations) 5 February 2003 &a.alfred;
Socket structures and system calls &status.wip; &a.tanimura;, &a.hsu;
IPv4, IPv6 &status.wip; 5 February 2003 &a.hsu;, &a.jennifer;
Network stack infrastructure &status.wip; 5 February 2003 &a.hsu;

Tasks

Following is an incomplete list of general tasks.

Task Responsible Last updated Status
Convert the giant lock from spinning to blocking, add the scheduler lock, add per-CPU idle processes. &a.dillon; 25 June 2000 &status.done;
Port the BSD/OS locking primitives (i386). &a.jake; 3 July 2000 &status.done;
Implement heavy-weight interrupt threads (i386). &a.grog; 3 August 2000 &status.done;
Rewrite the low level interrupt code (i386 UP). &a.grog; 3 August 2000 &status.done;
Demonstrated reasonable stability (self-hosted buildworld) (i386 UP). -smp developers 12 August 2000 &status.done;
Port the BSD/OS locking primitives (alpha). &a.dfr; 24 August 2000 &status.done;
Stub out (disable) spl()s. &a.grog; 30 August 2000 &status.done;
Port the BSD/OS ktr code. &a.grog;, &a.jhb; 30 August 2000 &status.done;
Rewrite the low level interrupt code (i386 SMP). &a.jhb; 1 September 2000 &status.done;
Demonstrated reasonable stability (self-hosted buildworld) (i386 SMP). -smp developers 6 September 2000 &status.done;
Demonstrated reasonable stability (self-hosted buildworld) (alpha). -smp developers 6 September 2000 &status.done;
Make malloc and friends thread-safe. &a.jasone; 10 September 2000 &status.done;
Implement msleep(), make tsleep() an msleep() wrapper. &a.jake; 11 September 2000 &status.done;
Make fxp driver thread-safe. &a.cp; 17 September 2000 &status.done;
Make mbuf's thread-safe. &a.bmilekic; 29 September 2000 &status.done;
Lock manager re-work. &a.jasone; 3 October 2000 &status.done;
Implement heavy-weight interrupt threads (alpha). &a.jhb;, &a.dfr; 5 October 2000 &status.done;
Rewrite the low level interrupt code (alpha). &a.dfr;, &a.jhb; 5 October 2000 &status.done;
Process accounting. &a.tegge;, &a.jhb; 5 October 2000 &status.done;
Make ethernet drivers thread-safe. &a.wpaul; 15 October 2000 &status.done;
Make the mutex headers mostly machine-independent. &a.jhb; 20 October 2000 &status.done;
Rename SMP_DEBUG to MUTEX_DEBUG. &a.jhb; 20 October 2000 &status.done;
Give each soft interrupt its own thread. &a.cp; 25 October 2000 &status.done;
Make sf_bufs (sendfile(2)) thread-safe. &a.bmilekic; 5 November 2000 &status.done;
Make the witness code work correctly. &a.jhb; 18 November 2000 &status.done;
Split the ktr-specific code out of db_interface.c. &a.jhb; 15 December 2000 &status.done;
Convert the sio driver to using a spin mutex. &a.jhb; 18 December 2000 &status.done;
Implement condition variables. &a.jake;, &a.jasone; 15 January 2001 &status.done;
Add a flag to mtx_init() (MTX_RECURSE) that denotes whether a mutex is allowed to recurse. &a.bmilekic; 19 January 2001 &status.done;
Make the zone allocator thread-safe. &a.des; 21 January 2001 &status.done;
Convert simplelocks to mutexes. &a.jasone; 24 January 2001 &status.done;
Make kernel preemptive with respect to interrupts. &a.jake; 31 January 2001 &status.done;
Cleanup of mutex API. &a.bmilekic; 8 February 2001 &status.done;
Remove COM_LOCK. &a.markm; 11 February 2001 &status.done;
Merge various scheduling classes into one run queue. Modify scheduler to support preemptable kernel. &a.jake; 11 February 2001 &status.done;
Make priority propagation work correctly. &a.jake; 11 February 2001 &status.done;
Make most of the interrupt thread code MI and shared between hardware and software interrupts. &a.jhb; 18 February 2001 &status.done;
Add protection to struct jail and jail-related functionality. &a.rwatson; 20 February 2001 &status.done;
Implement sx (shared/exclusive) locks. &a.jasone; 5 March 2001 &status.done;
Generalize/improve witness to handle more complex locking primitives (mtx, sx). &a.jhb; 28 March 2001 &status.done;
Convert the allproc and proctree locks from lockmgr locks to sx locks. &a.jhb; 28 March 2001 &status.done;
Make mbuf system use condition variables instead of msleep()/wakeup(). &a.bmilekic; 2 April 2001 &status.done;
Remove <sys/mutex.h> includes from other kernel headers such as <vm/vm_zone.h>, <sys/resourcevar.h>, <sys/ucred.h>, and <sys/mbuf.h>. &a.markm; 15 May 2001 &status.done;
Cleanup the various mp_machdep.c's, unify various SMP API's such as IPI delivery, etc. &a.jhb; 15 May 2001 &status.done;
Make most of the forward_* and forwarded_* functions MI. &a.jhb; 15 May 2001 &status.done;
Complete the MD support for SMP on the Alpha platform. &a.gallatin;, &a.dfr;, &a.jhb; 15 May 2001 &status.done;
Convert select() to use condition variables. &a.tanimura; 15 May 2001 &status.done;
Add a "giant" lock around the VM subsystem. &a.alfred; 13 June 2001 &status.done;
Introduce a modified slab allocator for the mbuf subsystem. &a.bmilekic; 21 June 2001 &status.done;
Add a witness_assert() function to handle lock assertions. &a.jhb; 27 June 2001 &status.done;
Extend sx locks to support try lock operations. &a.jhb; 27 June 2001 &status.done;
Document KTR. &a.jhb; 28 June 2001 &status.done;
Make fork_return, fork_exit, ast, and userret MI. &a.jhb; 29 June 2001 &status.done;
Make sched_lock's savecrit a per-process property saved and restored in mi_switch and initialized in fork_exit. &a.jhb; 30 June 2001 &status.done;
Make ast() loop. &a.jhb; 10 August 2001 &status.done;
Add upgrade/downgrade sx lock operations. Alexander Kabaev, &a.jasone; 13 August 2001 &status.done;
Implement semaphores. &a.jasone; 14 August 2001 &status.done;
Add support for upgrade/downgrades in witness. &a.jhb; 23 August 2001 &status.done;
Make most of cpu_wait() and cpu_exit() MI. &a.peter; 9 September 2001 &status.done;
Split NFS into client and server. &a.peter; 18 Oct 2001 &status.done;
Lock taskqueues. &a.arr;, &a.jhb; 25 October 2001 &status.done;
Add a per-thread ucred reference. &a.jhb; 25 October 2001 &status.done;
Make most of the per-CPU stuff MI. &a.jhb; 11 December 2001 &status.done;
Make critical section saved state per-thread instead of per-lock so that interlocking spin locks work properly. &a.jhb; 17 December 2001 &status.done;
Replace the APIC-specific imen_mtx with a MI-named icu_lock to protect interrupt controllers and associated data within the kernel for both i386 and alpha. &a.jhb; 20 December 2001 &status.done;
Use the per-thread critical section nesting level in the mutex and interrupt thread code to automatically determine when to not preempt. This makes the MTX_NOSWITCH, SWI_SWITCH, and SWI_NOSWITCH flags obsolete as the kernel will be able to figure out the proper behavior on its own. &a.jhb; 5 January 2002 &status.done;
Lock struct filedesc and struct file. &a.tanimura;, &a.alfred; 12 January 2002 &status.done;
Lock struct pgrp, struct session, and struct sigio. &a.tanimura; 23 February 2002 &status.done;
Lock pipe implementation, but not sigio/fown, VM interactions &a.alfred; 27 February 2002 &status.done;
Move to explicit reference counting for soft vnode references. &a.phk; 8 March 2002 &status.done;
Initialize mutex pools early enough that sx locks can be used for VM. &a.green; 14 March 2002 &status.done;
Place a global lock (sellock) around selinfo structures to fix a variety of lock order reversals, and make select() MP-safe. &a.alfred;, &a.davidc; 14 March 2002 &status.done;
Push down Giant on read, write, pread, pwrite system calls, acquiring Giant in the per-subsystem fileop layer for sockets, VFS, etc. &a.alfred; 15 March 2002 &status.done;
Lock down kernel module structures. &a.arr; 18 March 2002 &status.done;
Lock down kernel linker globals. &a.arr; 18 March 2002 &status.done;
Rewrite kernel memory allocator to be a slab allocator that uses per-cpu caches. &a.jeff; 21 March 2002 &status.done;
Replace incorrect use of MD critical section API to disable interrupts with a specific interrupt disable API. &a.imp;, &a.dfr;, &a.benno;, &a.jhb; 21 March 2002 &status.done;
Lock down access to the shared p_args "process arguments" structure through appropriate protection of that structure and references to it. &a.mini; 31 March 2002 &status.done;
Move from flags/tsleep lock to sx locks to protect sysctl tree from updates during sysctl operations. &a.mini; 1 April 2002 &status.done;
Create/port userland tool to manage KTR event dumps. &a.jake; 1 April 2002 &status.done;
Create MTX_SYSINIT and SX_SYSINIT macros that allow for initializing locks that are subsystem independent. &a.arr; 2 April 2002 &status.done;
Lock down the global securelevel variable. &a.arr; 2 April 2002 &status.done;
Make grow_stack() MI. Possibly even a macro or inline. &a.alc; 6 April 2002 &status.done;
Lock use of p_fd, which otherwise can result in corrupted p_fd panics during heavy operation. Start with a global, and move to per-proc locking. &a.alfred;, &a.tanimura; 8 April 2002 &status.done;
Lock struct pargs. &a.mini; 9 April 2002 &status.done;
Make {o,}sigreturn() MPSAFE. &a.alc; 11 April 2002 &status.done;
Rewrite kernel memory allocator so that Giant is not required for malloc() or free(). &a.jeff; 2 May 2002 &status.done;
Replace complex shared/exclusive locking scheme in the VM system with a purely exclusive lockmgr locking scheme, simplifying locking and removing potential livelock/deadlock scenarios. &a.green;, &a.alc; 3 May 2002 &status.done;
Push down Giant into readv/writev system calls in style of read/write/pread/pwrite once malloc no longer requires Giant in the handling of iovec structures for uio. &a.alc; 9 May 2002 &status.done;
Push down Giant in mprotect(), minherit(), and madvise() so that it is no longer acquired and released directly. &a.alc; 18 May 2002 &status.done;
Update suser() and p_can*() APIs to accept threads instead of processes. &a.jhb; 18 May 2002 &status.done;
Broadly transition to td_ucred from p_ucred once KSE dependencies are in place. &a.jhb; 18 May 2002 &status.done;
Add a witness_sleep() check to uma_zalloc() to catch code calling malloc() or uma_zalloc() while holding non-sleepable locks. &a.jhb; 20 May 2002 &status.done;
Optimize UP support by changing spin locks to only perform critical section enter and exits. &a.jhb; 21 May 2002 &status.done;
Make sleep mutexes spin if the current lock holder is executing on another CPU. &a.jhb; 21 May 2002 &status.done;
Add support for the IA32 pause instruction to spin loops in locks. &a.jhb; 21 May 2002 &status.done;
Make KTRACE write into tracefiles asynchronously. &a.jhb; 7 June 2002 &status.done;
Remove Giant from jail(2). &a.arr; 25 June 2002 &status.done;
Remove Giant from modnext(2), modfnext(2), modstat(2),and modfind(2). &a.arr; 25 June 2002 &status.done;
Fix synchronization of TLB flushes and invlpg() on x86 SMP. &a.peter; 12 July 2002 &status.done;
Make cpu_coredump MI. &a.peter; 7 September 2002 &status.done;
Add a subsystem lock to the accounting code. &a.arr; 11 September 2002 &status.done;
Fix SIGXPU and other #if 0'd things in mi_switch(). &a.jhb; 30 September 2002 &status.done;
Lock down TrustedBSD MAC implementation. &a.rwatson; 11 November 2002 &status.done;
Lock eventhandlers. &a.msmith;, &a.mini;, &a.jhb; 11 March 2003 &status.done;
Fix PHOLD() so that it blocks to guarantee PS_INMEM. &a.jhb; 22 April 2003 &status.done;
Fix various procfs_machdep.c to not use sched_lock. &a.jhb; 22 April 2003 &status.done;
Lock all references to process credentials and remove Giant from process credential-related system calls. &a.jhb; 1 May 2003 &status.done;
Merge the procsig and sigacts structures, move the new sigacts structure out of the U-area and add appropriate locking. &a.jhb; 13 May 2003 &status.done;
Remove Giant from the kill() and killpg() system calls. &a.jhb; 13 May 2003 &status.done;
Lock struct proc. &a.jhb; 20 February 2001 &status.wip;
Make the kernel fully preemptive. &a.jhb; 7 September 2001 &status.wip;
Lock down the tty subsystem. Dick Garner, Jeremy Scofield, &a.tmm; 2 April 2002 &status.wip;
Fix clock locking to be the same on all platforms. &a.jhb; 16 November 2001 &status.wip;
Lock pipe implementation: sigio/fown-related evil &a.alfred; 27 February 2002 &status.wip;
Make use of process locking and process reference counting to protect debugging interfaces (and procfs). &a.jhb; 27 February 2002 &status.wip;
Make use of process locking to protect process monitoring sysctls, including those employed by 'ps' and related tools. &a.jhb; 27 February 2002 &status.wip;
Lock down newbus infrastructure to support driver fine-graining. &a.imp; 28 February 2002 &status.wip;
Remove the MP safe syscall flag from the syscall table and add explicit mtx_lock/unlock's of Giant to all syscalls. &a.dillon;, &a.mux; 28 February 2002 &status.wip;
SMPng architecture document. &a.jhb;, &a.rwatson; 28 February 2002 &status.wip;
Move to shared lock for VOP_GETATTR() to reduce blocking during frequent lightweight VFS operations. Modify namei() to provide a LOOKUP_SHARED flag to indicate when the lock required may be shared instead of exclusive. &a.jeff; 11 March 2002 &status.wip;
Create mutex profiling tool for the kernel so as to measure contention and behavior of kernel mutexes. &a.eivind;, &a.des; 31 March 2002 &status.wip;
Lock sysctl hierarchy and access methods. &a.mini; 9 April 2002 &status.wip;
Document existing vm_map locking and verify it's correctness. &a.alc; 18 May 2002 &status.wip;
Document existing vm_object locking and verify it's correctness. &a.alc; 4 May 2002 &status.wip;
Implement generic turnstiles to use when blocking on non-sleepable locks. &a.jhb; 23 May 2002 &status.wip;
Lock down linker_file_t structures in the kernel linker. &a.arr; 19 June 2002 &status.wip;
Lock down the SysV IPC code. &a.alfred; 13 August 2002 &status.wip;
Review locking strategy and correctness of VFS operations and fix up various failure modes associated with enabling VFS locking assertions. &a.jeff; 10 December 2002 &status.wip;
Document in-vnode locking strategy, clean it up, remove interlock, switch to sx locks. &a.jeff; 10 December 2002 &status.wip;
Implement lazy interrupt thread switching (context stealing) on i386. &a.bmilekic;, &a.kan; 10 December 2002 &status.wip;
Implement lazy interrupt thread switching (context stealing) on sparc64. &a.jake; 10 December 2002 &status.wip;
Switch from using lockmgr in VM to using a mutex or exclusive sxlock. Push down Giant on all VM except for vm_object/VFS and vm_page/pmap components. &a.alc; 10 December 2002 &status.wip;
Create mechanism in cdevsw structure to protect thread-unsafe drivers. &a.jhb; 15 May 2001 &status.stalled;
Make printf() safe to call in almost any situation to avoid deadlocks. &a.cp; 15 May 2001 &status.stalled;
Add locking to NFS.   15 May 2001 &status.new;
Remove priority argument from tsleep(), msleep(), cv_*wait*().   12 January 2001 &status.new;
Reimplement kqueue using condition variables. &a.jlemon; 15 March 2001 &status.new;
Conditionalize atomic ops in the SMP code that are used for debugging statistics. &a.peter; 15 March 2001 &status.new;
Add a new witness check for exiting processes to verify that an exiting process holds no locks. &a.jhb; 13 June 2001 &status.new;
Specify priorities for condition variables, semaphores, and sx locks.   7 September 2001 &status.new;
Axe schedpu() in favor of event driven priority updates as much as possible.   7 September 2001 &status.new;
Fix *hold (e.g. crhold) to return reference to object.   7 September 2001 &status.new;
Add witness checking for lockmgr locks.   7 September 2001 &status.new;
Add ICU spin locks on ia64.   4 January 2002 &status.new;
Fast-path push-down of Giant for VOP_READ() and VOP_WRITE().   25 February 2002 &status.new;
Lock contention measurement tool to measure heat of various locks, including Giant, and permit more directed performance and locking strategy optimization.   25 February 2002 &status.new;
Push the grabbing of Giant into Linux i386 ABI system calls.   25 February 2002 &status.new;
Push the grabbing of Giant into Linux AXP ABI system calls.   25 February 2002 &status.new;
Push the grabbing of Giant into SVR4 i386 ABI system calls.   25 February 2002 &status.new;
Push the grabbing of Giant into OSF/1 AXP ABI system calls.   25 February 2002 &status.new;
Push the grabbing of Giant into IBCS i386 ABI system calls.   25 February 2002 &status.new;
Lock pipe implementation: VM optimizations.   27 February 2002 &status.new;
Expand mutex profiling tool to also profile sx locks. &a.eivind;, &a.des; 1 April 2002 &status.new;
Implement atomic_fetchadd() for int's and long's with acq and rel versions.   23 May 2002 &status.new;
Implement a simple reference count API using atomic operations and use this to replace locks that just protect a reference count.   23 May 2002 &status.new;
Implement a sleep queue abstraction to be used by both msleep() and condition variables. This new abstraction should use a hash table of sleep queues with a spin lock on each sleep queue chain similar to turnstile chain locks to make sched_lock finger grained. &a.jhb; 23 May 2002 &status.new;
Add a witness_sleep() check to copyin/out() and s/fuword(). &a.jhb; 7 June 2002 &status.new;
Split witness_lock() into witness_checkorder() and witness_lock(). witness_checkorder() would be called before acquiring a lock to increase the changes of detecting and warning about a reversal prior to deadlocking. witness_lock() would simply update witness' internal state to note that a lock has been acquired. &a.jhb; 7 June 2002 &status.new;

This table lists the todo subtasks for multithreading the network stack.

- +
Task Responsible Last updated Status
Protect network interface queues. &a.jlemon; 24 November 2000 &status.done;
Lock up IP. &a.jennifer;, &a.hsu; 10 June 2002 &status.done;
Lock up TCP. &a.jennifer;, &a.hsu; 10 June 2002 &status.done;
Lock up UDP. &a.jennifer;, &a.hsu; 10 June 2002 &status.done;
Lock ifaddr reference counts. &a.hsu; 18 December 2002 &status.done;
Lock up syncache. &a.hsu; 19 December 2002 &status.done;
Lock up ifnet list. &a.hsu; 21 December 2002 &status.done;
Lock radix trees. &a.hsu; 23 December 2002 &status.done;
Lock up ARP. &a.hsu; 16 January 2003 &status.done;
Lock routing entries.   29 January 2003 &status.wip;
Lock up raw IP. &a.hsu; 27 February 2003 &status.wip;
Lock divert sockets. &a.hsu; 27 February 2003 &status.wip;
Lock up Unix domain protocols. Lock up &unix; domain protocols. &a.hsu; 27 February 2003 &status.wip;
Lock up IPv6.   27 February 2003 &status.wip;
Lock struct ifnet.   19 January 2001 &status.new;
Lock down struct socket. &a.tanimura; 21 April 2002 &status.wip;
Reduce contention upon locking a socket buffer by replacing tsleep() and wakeup() with a condvar. &a.tanimura; 21 April 2002 &status.new;

Known Issues

Issue Last updated Status
Idle processor time is not charged to the idle processes. 20 September 2000 &status.resolved;
microuptime creeps backwards. 4 October 2000 &status.resolved;
microuptime() went backwards 4 October 2000 &status.resolved;
Process accounting is not accurate (the more CPUs, the closer to correct it is). 5 October 2000 &status.resolved;
M_DEVBUF is probably the wrong memory pool for interrupt stuff and we should think about creating a new malloc pool for that stuff. 9 February 2001 &status.resolved;
PC card eject panics due to a race condition in the interrupt thread code. 15 March 2001 &status.resolved;
SMP x86 boxes are seeing NCPU * 100 clk interrupts and NCPU * 128 rtc interrupts. 15 May 2001 &status.resolved;
Witness will infinitely recurse when it acquires Giant after sleeping with a sleepable lock. 27 June 2001 &status.resolved;
Serial gdb does not work if boot_ddb and boot_gdb options are specified. 14 July 2002 &status.resolved;
Serial gdb does not work at 115200 baud. 14 July 2002 &status.resolved;
Serial gdb never regains control once 'cont' has been entered. 14 July 2002 &status.resolved;
Profiling is broken. 20 February 2001 &status.unresolved;
jail_sysvipc_allowed is checked in an unsafe manner in the SYSV IPC syscalls. 5 March 2002 &status.unresolved;

News

The remainder of this page is structured as a reverse-chronological log.

13 January 2002 15 May 2001 22 March 2001 5 March 2001 24 January 2001 12 January 2001 11 October 2000 8 September 2000 6 September 2000 5 September 2000 1 September 2000 30 August 2000 12 August 2000 3 August 2000 6 July 2000 5 July 2000 3 July 2000 26 June 2000 25 June 2000 19 June 2000 &footer;