gwsystems / composite

A component-based OS

Home Page:composite.seas.gwu.edu

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

3 step protocol for cap active needs to be fixed

WenyuanShao opened this issue · comments

3 step protocol for cap active needs to be fixed. There is a bug in this function.

To add more detail:

The three-step protocol for capability activation is meant to address races between two capability activations in the same slot. Currently, the code in the repo simply doesn't do this. The abstractions of the code abide by the 3 step protocol, but the implementation of that abstraction does not. BUG.

The three steps are:

  1. Atomically mark the slot as allocated (with cas).
  2. Update the body of the slot but not the type, so that any parallel accesses to the slot will fail as it is being populated.
  3. Only after the slot is well-formed, do we set its type to the apporpriate value to enable accesses to the resource.

Note that once a slot is active, it is immutable with very few exceptions.