Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/seqc.h
Context not available. | |||||
/* | /* | ||||
* seqc_t may be included in structs visible to userspace | * seqc_t may be included in structs visible to userspace | ||||
*/ | */ | ||||
typedef uint32_t seqc_t; | #include <sys/_seqc.h> | ||||
#ifdef _KERNEL | #ifdef _KERNEL | ||||
Context not available. | |||||
return (seqc_consistent_nomb(seqcp, oldseqc)); | return (seqc_consistent_nomb(seqcp, oldseqc)); | ||||
} | } | ||||
static __inline void | |||||
seqc_sleepable_write_begin(seqc_t *seqcp) | |||||
{ | |||||
MPASS(!seqc_in_modify(*seqcp)); | |||||
*seqcp += 1; | |||||
atomic_thread_fence_rel(); | |||||
} | |||||
static __inline void | |||||
seqc_sleepable_write_end(seqc_t *seqcp) | |||||
{ | |||||
atomic_store_rel_int(seqcp, *seqcp + 1); | |||||
MPASS(!seqc_in_modify(*seqcp)); | |||||
} | |||||
#endif /* _KERNEL */ | #endif /* _KERNEL */ | ||||
#endif /* _SYS_SEQC_H_ */ | #endif /* _SYS_SEQC_H_ */ | ||||
Context not available. |