Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| juniorjobs [2020/10/27 05:11] – JohnMarkGurney | juniorjobs [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 | + | Tasks for new contributors |
| - | Looking for the same type of page - but for ports? | + | 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 | + | * Use a virtual machine: VirtualBox |
| - | * always | + | * Kernel should |
| - | * make sure your patches adhere to [[https://www.freebsd.org/ | + | * Code should follow |
| ====== 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**: | + | **Technical Contact**: |
| ==== 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** | + | [[Doc/ |
| - | 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, | ||
| - | |||
| - | 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. | ||
| * PCPU stuff: DPCPU_* dpcpu_* PCPU_* | * PCPU stuff: DPCPU_* dpcpu_* PCPU_* | ||
| * sched_* | * sched_* | ||
| Line 73: | Line 38: | ||
| * cn* (sys/ | * cn* (sys/ | ||
| * ppsratecheck | * ppsratecheck | ||
| - | * sys/ | + | * sys/ |
| * drivers: cesa, glxsb, sec, cryptocteon, | * drivers: cesa, glxsb, sec, cryptocteon, | ||
| * device pager: cdev_pager_allocate, | * device pager: cdev_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/ | ||
| - | **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:// | * implement missing sbuf tests, [[https:// | ||
| - | You can look at the [[https://www.freebsd.org/ | + | You can look at the [[https://man.freebsd.org/ |
| ==== Requirements ==== | ==== Requirements ==== | ||
| Line 157: | Line 104: | ||
| ==== Description ==== | ==== Description ==== | ||
| + | |||
| + | [[Doc/ | ||
| 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/ | ||
| - | **Technical Contact**: WarnerLosh | ||
| - | |||
| - | ==== Difficulty ==== | ||
| - | Easy, but tedious | ||
| - | |||
| - | ==== Description ==== | ||
| - | There' | ||
| - | files in the system. Some of this duplication is unavoidable | ||
| - | since the machine are just a little bit different. However, | ||
| - | there' | ||
| - | 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' | ||
| - | 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 / | ||
| - | Have this directory have files named %%< | ||
| - | replace the machine/ | ||
| - | abi is kinda fuzzy, and would be strings like ieee-fp or | ||
| - | lp64 or ilp32. And " | ||
| - | and the like. the machine/ | ||
| - | into a #include %%< | ||
| - | %%< | ||
| - | on pre-processor predefines). | ||
| - | |||
| - | ==== Requirements ==== | ||
| - | |||
| - | * Knowledge of C, especially integer promotion | ||
| - | * Knowledge of build system | ||
| ====== Past projects ====== | ====== Past projects ====== | ||