On 18.06.2015 22:33, Christos Zoulas wrote: > In article > <trinity-286f8fb9-ca13-44b1-98d1-8563499c99d4-1434647933661@3capp-mailcom-bs15>, > Kamil Rytarowski <n...@gmx.com> wrote: >> -=-=-=-=-=- >> >> I'm attaching a proposition of locking(9). >> >> It was inspired by: >> http://leaf.dragonflybsd.org/cgi/web-man?command=locking§ion=ANY >> https://www.freebsd.org/cgi/man.cgi?query=locking%289%29 >> >> And by this page: >> http://www.feyrer.de/NetBSD/bx/blosxom.cgi/nb_20080409_0027.html >> >> I included some extra notes about the kernel design and contexts: >> - thread context vs softirq context vs hardirq context, >> - process vs kernel thread (LWP), >> - top kernel half vs bottom kernel half. >> >> These details might be off topic, but I need them to understand the >> overall design and the internal flow. > > That's very nice. I would like to include information on what is the > typical use for each one and also which ones are obsolete. I also think > that *tsleep should be included in the docs (at least saying that it has > been replaced by condvars). >
I will do it. I was told that the mb(9) interface deprecated.... I don't know why? And indeed, I see it just on a few archs. $ grep -r 'mb_write()' . ./arch/hppa/include/mutex.h: mb_write(); $ grep -r 'mb_memory()' . ./arch/alpha/include/mutex.h:#define MUTEX_GIVE(mtx) mb_memory() ./arch/hppa/include/mutex.h: mb_memory(); ./arch/m68k/include/mutex.h:#define MUTEX_GIVE(mtx) mb_memory() ./arch/mips/include/lock.h: mb_memory(); ./arch/mips/include/lock.h: mb_memory(); ./arch/powerpc/include/mutex.h:#define MUTEX_GIVE(mtx) mb_memory() $ grep -r 'mb_read()' . ./arch/alpha/include/mutex.h:#define MUTEX_RECEIVE(mtx) mb_read() ./arch/m68k/include/mutex.h:#define MUTEX_RECEIVE(mtx) mb_read() ./arch/mips/include/lock.h: mb_read(); ./arch/mips/include/lock.h: mb_read(); ./arch/powerpc/include/mutex.h:#define MUTEX_RECEIVE(mtx) mb_read() ./arch/sparc/include/lock.h: mb_read(); ./arch/sparc64/include/mutex.h:#define MUTEX_RECEIVE(mtx) mb_read() ./arch/sparc64/include/rwlock.h:#define RW_RECEIVE(rw) mb_read()