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 [2022/10/21 23:17] – Refresh above the fold, add links where suitable/possible KubilayKocakjuniorjobs [2023/07/31 12:55] (current) – remove arm64 disassembler item, it is being worked on MitchellHorne
Line 1: Line 1:
 Tasks for new contributors that should take ~ a few days to complete. Tasks for new contributors that should take ~ a few days to complete.
  
-Looking for this list, but for [[Ports|ports? Check out [[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 8: Line 8:
  
   * Use a virtual machine: VirtualBox and [[bhyve]] are good options.   * Use a virtual machine: VirtualBox and [[bhyve]] are good options.
-  * Kernel should always have debugging options enabled. [[Glossary#CURRENT|CURRENT]] has most kernel debugging options (ttp:%%//%%www.freebsd.org/doc/en/books/developers-handbook/kerneldebug-options.html) enabled by default.+  * 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.
   * Code should follow [[https://man.freebsd.org/style(9)|FreeBSD Code Style Guidelines]], unless there are compelling cases to make exceptions.   * Code should follow [[https://man.freebsd.org/style(9)|FreeBSD Code Style Guidelines]], unless there are compelling cases to make exceptions.
  
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
Line 84: 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 91: 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.
- 
-===== arm64: add more instruction definitions to the disassembler ===== 
-**Technical Contact**: MitchellHorne 
- 
-==== Difficulty ==== 
- 
-Easy 
- 
-==== Description ==== 
- 
-The kernel debugger ddb(4) has the ability to print arbitrary bytes in the form of CPU instructions, i.e. disassemble them. The arm64 disassembly code located in sys/arm64/arm64/disassem.c is responsible for this functionality, but only has definitions for a handful of common instructions. This code should be extended to support a wider set of ARMv8 instruction opcodes. 
- 
-==== Requirements ==== 
- 
-  * Basic C language programming skills 
-  * Able to read and understand ARMv8 instruction encodings 
  
 ====== 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 ====
  • juniorjobs.1666394248.txt.gz
  • Last modified: 2022/10/21 23:17
  • by KubilayKocak