Junior Jobs

Introduction

Tasks for new src contributors that should take ~ a few days to complete.

Looking for this list, but for ports? Please see WantedPorts.

Or, for other (longer-term) src tasks, please set the IdeasPage or WiFi/IdeasPage.

General kernel work hints

How to submit patches

Mail technical contact and inline the patch (don't attach, have it as a part of the mail). It may be your e-mail client or something along the way will mess with the patch, so consider providing an url as a backup. The patch should be against head and in unified format (diff -u, git diff, etc.).

Kernel projects

Various kernel man pages needed

[last updated: 2023-01-29]

Technical Contact: JohnMarkGurney

Difficulty

Easy

Description

Add missing man pages for parts of the FreeBSD kernel.

Doc/MissingManpages directs readers to start at FreeBSD bug 108980 – list of missing man pages.

Currently known missing:

Requirements

User space projects

Improve Test Coverage

[last updated: 2018-08-20]

Technical Contact: JohnMarkGurney

Difficulty

Easy

Description

Implement additional tests. Currently known missing:

You can look at the atf-c(3) manpage for info on writing tests.

Requirements

Tidy up some ELF toolchain loose ends

[last updated: 2015-03-27]

Technical Contact: EdMaste

Difficulty

Medium

Description

We've migrated to using the ELF toolchain version of tools like size, strip, nm, etc. Some of the ELF toolchain tools are derivatives of tools that first appeared in the FreeBSD tree, and others are new. There are a few remaining tasks in the ELF toolchain project.

Requirements

Various man page improvements

[last updated: 2018-08-21]

Technical Contact: JohnMarkGurney

Difficulty

Easy

Description

Doc/MissingManpages directs readers to start at FreeBSD bug 108980 – list of missing man pages.

Add or improve man pages:

Requirements

Build projects

(none listed at this time)

Past projects

These are provided here as examples of appropriate projects in the scope of this page.

Validate coredump format string

Technical Contact: MateuszGuzik

Committed as (TBA).

Difficulty

Easy

Description

The pattern can be set with the kern.corefile sysctl. No validation is performed.

However, errors are detected during traversal.

Modify the code so that it validates the pattern prior to accepting it.

Convert mountlist_mtx to rwlock

Technical Contact: MateuszGuzik

Committed as (TBA).

Difficulty

Easy

Description

Self-explanatory.

Rename it to mountlist_lock.

Note that mountlist is rarely modified and even shared locking with rwlocks introduces overhead. Interested person can upgrade this task to non-junior by coming up with a solution exploiting rare need to modify the list. Example approaches include designing a locking primitive with cheap shared locking (think: per-cpu) at the expense of exclusive locking.

Requirements

Fix corefilename race

Technical Contact: MateuszGuzik

Committed as r280312.

Difficulty

Easy

Description

The kernel keeps core file pattern in corefilename array. It can be modified at any time, including when it is being accessed to generate core names.

Fix the problem.

sysctl reporting current working directory

Technical Contact: MateuszGuzik

Committed as r274167.

Difficulty

Medium

Description

Right now current working directory of a differnent process can be obtained with kern.proc.filedesc sysctl. But it also returns the list of open file descriptors which adds a lot of overhead if the list is long (e.g. 10k entries). One frequent user of this sysctl is tmux which wants current working directory of various processes, but has to obtain the whole list.

Add a sysctl which returns only current working directory or all special entries (see procstat -f output for the list), but no files.

Provide an example patch for tmux utilizing this new functionality.

Requirements

Embedd group table into struct ucred

Technical Contact: MateuszGuzik

Committed as r274122.

Difficulty

Easy

Description

Each instance of strut ucred has a pointer to a table with groups. Current size of struct ucred is 160 bytes, while it occupies space in 256-byte slab (i.e. we waste almost 100 bytes). On the other hand default group limit is 16 which gives 64 byte allocated from 64-byte slab.

Extend struct ucred with gid_t table of XU_NGROUPS elements and use it unless a bigger size is requested, in which case allocate memory just like current code does.

Temporary buffer in setgroups

Technical Contact: MateuszGuzik

Committed as r273684.

Difficulty

Easy

Description

Currently setgroups always allocates a temporary buffer. But most callers will provide small number of groups and for such cases a buffer on the stack will work just fine. Provide a temporary buffer capable of holding XU_NGROUPS groups and update the code to use it when appropriate. See sys_poll implementation in kern/sys_generic.c for an example of this approach.

A harder solution would be to pass it down to kern_getgroups which allocates memory anyway and copyin directly to new cred buffer.

Requirements

Replace loginclass mutex with rwlock

Technical Contact: MateuszGuzik

Committed as r273763.

Difficulty

Medium

Description

kern/kern_loginclass.c uses a mutex, even though rwlocks seem to be more suitable. While here update loginclass_find to lookup first and only allocated when needed, but beware of typical races. See uifind in kern/kern_resource.c for an idea how it should look like.

Requirements


CategoryProject CategoryTodo

JuniorJobs (last edited 2024-08-30T00:05:17+0000 by MarkLinimon)