23 |
void |
void |
24 |
iohelp_handle_io_release_conch (struct conch *c, void *user) |
iohelp_handle_io_release_conch (struct conch *c, void *user) |
25 |
{ |
{ |
26 |
|
struct shared_io *user_sh = c->holder_shared_page; |
27 |
|
|
28 |
|
spin_lock (&user_sh->lock); |
29 |
if (c->holder_shared_page->conch_status != USER_HAS_NOT_CONCH) |
if (c->holder_shared_page->conch_status != USER_HAS_NOT_CONCH) |
30 |
{ |
{ |
31 |
c->holder_shared_page->conch_status = USER_HAS_NOT_CONCH; |
c->holder_shared_page->conch_status = USER_HAS_NOT_CONCH; |
32 |
iohelp_fetch_shared_data (c->holder); |
iohelp_fetch_shared_data (c->holder); |
33 |
} |
} |
34 |
|
spin_unlock (&user_sh->lock); |
35 |
|
|
36 |
if (c->holder == user) |
if (c->holder == user) |
37 |
{ |
{ |
38 |
c->holder = 0; |
c->holder = 0; |