diff options
author | Richard Braun <rbraun@sceen.net> | 2013-05-15 02:12:57 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2013-05-15 02:12:57 +0200 |
commit | 05eaaafa89b813e1bd5e34b4d47ec99cdc3a5911 (patch) | |
tree | 84fc50645b2a5ba4f17dfaa2a92059c350956b04 /kern/llsync_i.h | |
parent | b6555e76c36170e60e09125c0bcd7b997f68e4a9 (diff) |
kern/llsync: new module
This module provides lockless synchronization so that reads can safely occur
during updates, without holding a lock. It is based on passive serialization
as described in US patent 4809168, and achieves a goal similar to Linux RCU
(Read-Copy Update).
Diffstat (limited to 'kern/llsync_i.h')
-rw-r--r-- | kern/llsync_i.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/kern/llsync_i.h b/kern/llsync_i.h new file mode 100644 index 00000000..89a7fe83 --- /dev/null +++ b/kern/llsync_i.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2013 Richard Braun. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef _KERN_LLSYNC_I_H +#define _KERN_LLSYNC_I_H + +#include <kern/param.h> + +/* + * Per-processor flag indicating if a processor checked in. + */ +struct llsync_cpu_checkpoint { + int checked; +} __aligned(CPU_L1_SIZE); + +extern struct llsync_cpu_checkpoint llsync_cpu_checkpoints[MAX_CPUS]; + +#endif /* _KERN_LLSYNC_I_H */ |