Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
juniorjobs [2020/10/27 05:11] – JohnMarkGurneyjuniorjobs [2023/07/31 12:55] (current) – remove arm64 disassembler item, it is being worked on MitchellHorne
Line 1: Line 1:
-This is a list of tasks for beginners that should take few evening to complete.+Tasks for new contributors that should take ~ a few days to complete.
  
-Looking for the same type of page - but for ports? Look at [[WantedPorts]]+Looking for this list, but for [[Ports|ports]]? Check out [[WantedPorts]].
  
 What about other ideas? Look at [[IdeasPage]] What about other ideas? Look at [[IdeasPage]]
Line 7: Line 7:
 ====== General kernel work hints ====== ====== General kernel work hints ======
  
-  * boot stuff in a vm. virtualbox and bhyve are nice options. +  * Use a virtual machine: VirtualBox and [[bhyve]] are good options. 
-  * always build the kernel with debugging options enabled. **head** kernels have most important options enabled by default, you can read more [[http://www.freebsd.org/doc/en/books/developers-handbook/kerneldebug-options.html|here]]. +  * Kernel should always have debugging options enabled. [[Glossary#CURRENT|CURRENT]] has most [[http://www.freebsd.org/doc/en/books/developers-handbook/kerneldebug-options.html|kernel debugging options]] enabled by default. 
-  * make sure your patches adhere to [[https://www.freebsd.org/cgi/man.cgi?query=style&apropos=0&sektion=0&manpath=FreeBSD+11-current&arch=default&format=html|style(9)]]. Of course you can violate it when it makes sense, but it most likely does not, so you typically don't want to do that.+  * Code should follow [[https://man.freebsd.org/style(9)|FreeBSD Code Style Guidelines]], unless there are compelling cases to make exceptions.
  
 ====== How to submit patches ====== ====== How to submit patches ======
Line 17: Line 17:
 ====== Kernel projects ====== ====== Kernel projects ======
  
-===== Free old file descriptor tables ===== +===== Various kernel man pages needed ===== 
-**Technical Contact**: MateuszGuzik+**Technical Contact**: [[JohnMarkGurney]]
  
 ==== Difficulty ==== ==== Difficulty ====
Line 26: Line 26:
 ==== Description ==== ==== Description ====
  
-File descriptor tables can be shared between multiple processes (see **fdshare**).+Add missing man pages for parts of the %%FreeBSD%% kernel.
  
-The kernel performs lockless file descriptor lookup, but file descriptor table can be reallocated by **fdgrowtable** at any time. To deal with this problem old tables are kept around until all processes possibly using them exit.+[[Doc/MissingManpages]] directs readers to start at %%FreeBSD%% bug [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=108980|108980 – list of missing man pages]].
  
-However, we can safely free the old table if given process has only one thread and the table is not shared.+Currently known missing:
  
-Implement freeing such tables and submit a test program showing that it works. 
- 
-==== Requirements ==== 
- 
-  * C language programming skills. 
- 
-===== Rework functions allocating credentials ===== 
-**Technical Contact**: [[MateuszGuzik]] 
- 
-==== Difficulty ==== 
- 
-Easy 
- 
-==== Description ==== 
- 
-Credentials are copy-on-write, i.e. once assigned to a process are never modified. Allocation of new credentials involved allocating one buffer for **struct ucred** and second one for groups.  Then, if old creds have more groups than the default, we have to reallocate group buffer. **crget** and the like can be extended to accept old credentials as an argument and derive expected number of groups from that. 
- 
-Groups in credentials are always stored sorted. But the function used to store groups always sorts them. even though we can tell they have to be sorted already. 
- 
-Rework the code to be more efficient and not do unnecessary work. 
- 
-==== Requirements ==== 
- 
-  * C language programming skills. 
- 
-===== Various kernel man pages needed ===== 
-**Technical Contact**: [[JohnMarkGurney]] 
- 
-==== Difficulty ==== 
- 
-Easy 
- 
-==== Description ==== 
- 
-Add missing man pages for parts of the %%FreeBSD%% kernel.  Currently known missing: 
   * PCPU stuff: DPCPU_* dpcpu_* PCPU_*   * PCPU stuff: DPCPU_* dpcpu_* PCPU_*
   * sched_*   * sched_*
Line 73: Line 38:
   * cn* (sys/cons.h), such as cnputs   * cn* (sys/cons.h), such as cnputs
   * ppsratecheck   * ppsratecheck
-  * sys/param.h/cdefs.h helper functions like: powerof2, nitems, setbit, member2struct, %%<%%underbar>%%<%%underbar>offsetof, +  * sys/param.h/cdefs.h helper functions like: powerof2, nitems, setbit, member2struct, %%<%%underbar>%%<%%underbar>offsetof,
   * drivers: cesa, glxsb, sec, cryptocteon, nlmsec, rmisec   * drivers: cesa, glxsb, sec, cryptocteon, nlmsec, rmisec
   * device pager: cdev_pager_allocate, mmap_single, vm_pager_allocate   * device pager: cdev_pager_allocate, mmap_single, vm_pager_allocate
   * FEATURE (macro that adds kern.features)   * FEATURE (macro that adds kern.features)
 +  * tty_makedev and friends
   * m_ether_tcpip_hash*   * m_ether_tcpip_hash*
   * sbuf_uionew   * sbuf_uionew
Line 83: Line 49:
   * DIOCG* ioctls from sys/disk.h   * DIOCG* ioctls from sys/disk.h
   * Document which standard libc functions are available in the kernel   * Document which standard libc functions are available in the kernel
- 
-In addition, please refer to [[MissingManpages|the wiki article on missing manpages]]. 
  
 ==== Requirements ==== ==== Requirements ====
Line 90: Line 54:
   * minimal C language programming skills.   * minimal C language programming skills.
   * Ability to read/write mdoc(7), though jmg@ is willing to help w/ mark up.   * Ability to read/write mdoc(7), though jmg@ is willing to help w/ mark up.
- 
-===== pf: TOS matching/setting for IPv6 ===== 
-**Technical Contact**: KristofProvost 
- 
-==== Difficulty ==== 
- 
-Easy 
- 
-==== Description ==== 
- 
-pf can filter on and set TOS bits for IPv4. This should be extended, using the same keywords, to also work on IPv6. 
-The code can be ported from %%OpenBSD%%. 
- 
-==== Requirements ==== 
- 
-  * minimal C language programming skills. 
-  * A basic understanding of IPv4/IPv6 
  
 ====== User space projects ====== ====== User space projects ======
Line 122: Line 69:
   * implement missing sbuf tests, [[https://svnweb.freebsd.org/base/head/lib/libsbuf/tests/sbuf_core_test.c?view=log|sbuf_core_test.c]] has a few tests that are if 0'd out at the end of the file   * implement missing sbuf tests, [[https://svnweb.freebsd.org/base/head/lib/libsbuf/tests/sbuf_core_test.c?view=log|sbuf_core_test.c]] has a few tests that are if 0'd out at the end of the file
  
-You can look at the [[https://www.freebsd.org/cgi/man.cgi?query=atf-c&apropos=0&sektion=0&manpath=FreeBSD+11.2-RELEASE+and+Ports&arch=default&format=html|atf-c(3)]] manpage for info on writing tests.+You can look at the [[https://man.freebsd.org/cgi/man.cgi?query=atf-c&apropos=0&sektion=0&manpath=FreeBSD+11.2-RELEASE+and+Ports&arch=default&format=html|atf-c(3)]] manpage for info on writing tests.
  
 ==== Requirements ==== ==== Requirements ====
Line 157: Line 104:
  
 ==== Description ==== ==== Description ====
 +
 +[[Doc/MissingManpages]] directs readers to start at %%FreeBSD%% bug [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=108980|108980 – list of missing man pages]].
  
 Add or improve man pages: Add or improve man pages:
 +
   * intro(3) is missing MANY libraries that are now common   * intro(3) is missing MANY libraries that are now common
   * libc(3) is missing, include reference and places for notable additions, and standards compliance   * libc(3) is missing, include reference and places for notable additions, and standards compliance
   * timespec, sbintime_t and various sys/time.h are not documented.   * timespec, sbintime_t and various sys/time.h are not documented.
- 
-In addition, please refer to [[MissingManpages|the wiki article on missing manpages]]. 
  
 ==== Requirements ==== ==== Requirements ====
Line 171: Line 119:
  
 ====== Build projects ====== ====== Build projects ======
- 
-===== Reduce Duplication in sys/*/include files ===== 
-**Technical Contact**: WarnerLosh 
- 
-==== Difficulty ==== 
-Easy, but tedious 
- 
-==== Description ==== 
-There's much duplication between the different sys/*/include 
-files in the system. Some of this duplication is unavoidable 
-since the machine are just a little bit different. However, 
-there's two areas where it is avoidable. First, all machines 
-that %%FreeBSD%% currently runs on support either no floating 
-point at all, or IEEE floating point (or sometimes IEEE 
-with one or two additions). It would be nice to collapse the 
-identical copies of the IEEE float stuff down to one copy. 
-Second, there's a number of constants / design decisions that 
-are identical across all ILP32 implementations and across all 
-LP64 implementations that are currently just copied between 
-the directories. It would be nice to clean these up. 
- 
-One possible design would be to create a sys/abi directory 
-in the kernel sources. Install this as /usr/include/abi. 
-Have this directory have files named %%<%%abi>-%%<%%thing>.h to 
-replace the machine/_thing.h files we have now. Here, 
-abi is kinda fuzzy, and would be strings like ieee-fp or 
-lp64 or ilp32. And "thing" would be stuff like _inttypes 
-and the like. the machine/_thing.h file would then turn 
-into a #include %%<%%api/lp64-_thing.h> or #include 
-%%<%%api/ilp32-thing.h> (or both on some architectures depending 
-on pre-processor predefines). 
- 
-==== Requirements ==== 
- 
-  * Knowledge of C, especially integer promotion 
-  * Knowledge of build system 
  
 ====== Past projects ====== ====== Past projects ======
  • juniorjobs.1603775470.txt.gz
  • Last modified: 2020/10/27 05:11
  • by JohnMarkGurney