21 lines
798 B
C
21 lines
798 B
C
|
#ifndef __VFS_TLL_H__
|
||
|
#define __VFS_TLL_H__
|
||
|
|
||
|
/* Three-level-lock. Allows read-only, read-serialized, and write-only locks */
|
||
|
|
||
|
typedef enum { TLL_NONE, TLL_READ, TLL_READSER, TLL_WRITE } tll_access_t;
|
||
|
typedef enum { TLL_DFLT = 0x0, TLL_UPGR = 0x1, TLL_PEND = 0x2 } tll_status_t;
|
||
|
|
||
|
typedef struct {
|
||
|
tll_access_t t_current; /* Current type of access to lock */
|
||
|
struct worker_thread *t_owner;/* Owner of non-read-only lock */
|
||
|
signed int t_readonly; /* No. of current read-only access */
|
||
|
tll_status_t t_status; /* Lock status; nothing, pending upgrade, or
|
||
|
* pending upgrade of read-serialized to
|
||
|
* write-only */
|
||
|
struct worker_thread *t_write;/* Write/read-only access requestors queue */
|
||
|
struct worker_thread *t_serial;/* Read-serialized access requestors queue */
|
||
|
} tll_t;
|
||
|
|
||
|
#endif
|