Harvard-PRINCESS / Guppy

A very adaptable fish.
Other
1 stars 3 forks source link

Master Ticket: Inventory MD code in barrelfish #33

Open mwookawa opened 7 years ago

mwookawa commented 7 years ago

This is a meta-task that consists of multiple child subtasks.

Children of this ticket should link #33 in their descriptions.

Our long-term goal is to build an inventory of all Machine-Dependent (MD) code in the barrelfish tree. Our short-term goal is to bite off small chunks of that task guided by our previous inventories of the OS161 and NetBSD kernels trees.

Open Discussion Wiki Page:

https://github.com/Harvard-PRINCESS/Guppy/wiki/%5BOPEN-FOR-DISCUSSION%5D-Barrelfish-Source-Tree-to-Functionality-mapping

Open Children:

Currently none.

marikgoldstein commented 7 years ago

1) what is MD code?

2) When making a "child ticket", how do we "link this ticket (#33)"? Just making #33 clickable like this?

mwookawa commented 7 years ago

Literally, just put "Child of #33" in the description :)

MD code ~= "Machine-Dependent Code"

mwookawa commented 7 years ago

note that the pandaboard cortex-a9 is an ARMv7-A ISA core.

mwookawa commented 7 years ago

we now have an extremely good idea of what the syscall handling code looks like, and crystal has made progress on a) mapping out the difference between x86 and arm syscall call handling, b) replacing some machine dependent code with machine-independent code within the syscall dispatch interface.

what we don't have is good descriptions of where the rest of the machine dependent code in the barrelfish kernel is. we know already that kernel/arch holds maybe 40% of it, but there is machine dependent code many elsewhere.

I have seen these other bits of code take two forms:

First, as preprocessor guarded clauses; ie, #define ARCH in the build system followed by #if defined ARCH do_hack() #endifin the operational code.

user/kernel code with potentially unnecessary dependencies. for example, vfs_blockdevfs_megaraid.c, which relies on a megaraid driver that will not build (as no megaraid device exists) for most platforms. in this particular case, the vfs library (barrelfish/lib/vfs) could be rewritten (although with non-trivial effort) to virtualize devices.

jingmeihu commented 7 years ago

https://github.com/Harvard-PRINCESS/Guppy/wiki/Inventory-MD-code-in-Barrelfish-(ARM)

penlu commented 7 years ago

include/arch is another large reservoir of machine-dependent code

high level statistics using find:

wc -l `find . -not -path "./build/*" -type d -name "arch" -exec find {} +`

gives 71648 lines of code in directories named arch, of which: