Skip to content
This repository has been archived by the owner on Oct 16, 2018. It is now read-only.

Commit

Permalink
Pipes should wake up from fswait when they close
Browse files Browse the repository at this point in the history
  • Loading branch information
klange committed Aug 21, 2018
1 parent 058e84b commit 4f450cf
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 1 deletion.
1 change: 1 addition & 0 deletions base/usr/include/kernel/ringbuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,6 @@ size_t ring_buffer_write(ring_buffer_t * ring_buffer, size_t size, uint8_t * buf
ring_buffer_t * ring_buffer_create(size_t size);
void ring_buffer_destroy(ring_buffer_t * ring_buffer);
void ring_buffer_interrupt(ring_buffer_t * ring_buffer);
void ring_buffer_alert_waiters(ring_buffer_t * ring_buffer);
void ring_buffer_select_wait(ring_buffer_t * ring_buffer, void * process);

2 changes: 1 addition & 1 deletion kernel/ds/ringbuffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ static inline void ring_buffer_increment_write(ring_buffer_t * ring_buffer) {
}
}

static void ring_buffer_alert_waiters(ring_buffer_t * ring_buffer) {
void ring_buffer_alert_waiters(ring_buffer_t * ring_buffer) {
if (ring_buffer->alert_waiters) {
while (ring_buffer->alert_waiters->head) {
node_t * node = list_dequeue(ring_buffer->alert_waiters);
Expand Down
4 changes: 4 additions & 0 deletions kernel/fs/unixpipe.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ static void close_write_pipe(fs_node_t * node) {
debug_print(NOTICE, "Both ends now closed, should clean up.");
} else {
ring_buffer_interrupt(self->buffer);
if (!ring_buffer_unread(self->buffer)) {
ring_buffer_alert_waiters(self->buffer);
}
}
}

Expand All @@ -98,6 +101,7 @@ static int check_pipe(fs_node_t * node) {
if (ring_buffer_unread(self->buffer) > 0) {
return 0;
}
if (self->write_closed) return 0;
return 1;
}

Expand Down

0 comments on commit 4f450cf

Please sign in to comment.