[Barrelfish-users] How Barrelfish Manage MPB on SCC?

Stefan Kästle stefan.kaestle at inf.ethz.ch
Thu Jun 7 12:54:22 CEST 2012


Hi,

> 1. In /kernel/arch/scc/rck.c, there are some functions which seems not 
> defined, such as rck_tas_rd_raw, rck_initialize, etc. Although I can 
> see that they are wraps of low level assembly code, but I can not find 
> their definition anywhere in the source tree. Can someone kindly point 
> it out?
These functions are automatically generated by Mackerel from 
dev/rck.dev. The generated file will end up in 
<build>/scc/include/dev/rck_dev.h as
static inline uint32_t __DP(tas_rd_raw)( __DN(t) * _dev, int _i )

> 2. I know that RCK inter-connect driver use MPB as notification 
> buffer, but I didn't find the code that manage this MPB space. Can 
> someone point out where the RCK backend is implemented? I was also 
> wondering how much MPB space is left and whether user application can 
> touch these left MPB space.
They are configured in kernel/arch/scc/rck.c
Have a look at functions rck_send_notification and 
rck_handle_notification. Notifications are stored in a ring-buffer. The 
size of this ring-buffer is defined as RING_SIZE. You can vary the size 
accordingly. Don't set the value too small. Last time I checked, 
overflows were not handled properly (an assertion will fail in case it 
does overflow).
The default configuration will use up pretty much all MPB space (255 
entries in the ring-buffer at 32 Bytes = 8160 Bytes with MPB being 8192 
Bytes)

Hope that helps

-- 
Stefan




More information about the Barrelfish-users mailing list