Lines Matching defs:rw

14 void eMrwlock_read_enter(eMrwlock_t *rw, char *file, int line)
16 if (rw->eMrw_magic != EMM_MAGIC) {
18 rw->eMrw_owner, rw, rw->eMrw_magic);
21 if (rw->eMrw_read != 0 || rw->eMrw_write != 0) {
24 rw->eMrw_owner, rw, rw->eMrw_read, rw->eMrw_write);
27 rw->eMrw_read++;
28 rw->eMrw_heldin = file;
29 rw->eMrw_heldat = line;
33 void eMrwlock_write_enter(eMrwlock_t *rw, char *file, int line)
35 if (rw->eMrw_magic != EMM_MAGIC) {
37 rw->eMrw_owner, rw, rw->eMrw_magic);
40 if (rw->eMrw_read != 0 || rw->eMrw_write != 0) {
43 rw->eMrw_owner, rw, rw->eMrw_read, rw->eMrw_write);
46 rw->eMrw_write++;
47 rw->eMrw_heldin = file;
48 rw->eMrw_heldat = line;
52 void eMrwlock_try_upgrade(eMrwlock_t *rw, char *file, int line)
54 if (rw->eMrw_magic != EMM_MAGIC) {
56 rw->eMrw_owner, rw, rw->eMrw_magic);
59 if (rw->eMrw_read != 0 || rw->eMrw_write != 0) {
62 rw->eMrw_owner, rw, rw->eMrw_read, rw->eMrw_write);
65 rw->eMrw_write++;
66 rw->eMrw_heldin = file;
67 rw->eMrw_heldat = line;
70 void eMrwlock_downgrade(eMrwlock_t *rw, char *file, int line)
72 if (rw->eMrw_magic != EMM_MAGIC) {
74 rw->eMrw_owner, rw, rw->eMrw_magic);
77 if (rw->eMrw_read != 0 || rw->eMrw_write != 1) {
80 rw->eMrw_owner, rw, rw->eMrw_read, rw->eMrw_write);
83 rw->eMrw_write--;
84 rw->eMrw_read++;
85 rw->eMrw_heldin = file;
86 rw->eMrw_heldat = line;
90 void eMrwlock_exit(eMrwlock_t *rw)
92 if (rw->eMrw_magic != EMM_MAGIC) {
94 rw->eMrw_owner, rw, rw->eMrw_magic);
97 if (rw->eMrw_read != 1 && rw->eMrw_write != 1) {
99 rw->eMrw_owner, rw, rw->eMrw_read, rw->eMrw_write);
102 if (rw->eMrw_read == 1)
103 rw->eMrw_read--;
104 else if (rw->eMrw_write == 1)
105 rw->eMrw_write--;
106 rw->eMrw_heldin = NULL;
107 rw->eMrw_heldat = 0;
113 void eMrwlock_init(eMrwlock_t *rw, char *who)
115 if (rw->eMrw_magic == EMM_MAGIC) { /* safe bet ? */
118 rw->eMrw_owner, rw, rw->eMrw_magic);
121 rw->eMrw_magic = EMM_MAGIC;
122 rw->eMrw_read = 0;
123 rw->eMrw_write = 0;
125 rw->eMrw_owner = strdup(who);
127 rw->eMrw_owner = NULL;
132 void eMrwlock_destroy(eMrwlock_t *rw)
134 if (rw->eMrw_magic != EMM_MAGIC) {
136 rw->eMrw_owner, rw, rw->eMrw_magic);
139 if (rw->eMrw_owner != NULL)
140 free(rw->eMrw_owner);
141 memset(rw, 0xa5, sizeof(*rw));