From 5d273583eae3198c3350a666c9f9140780acac6e Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Mon, 16 Jan 2006 17:56:42 +0000 Subject: [PATCH] bugfix, noticed that releasing a semaphore 0 times isn't very useful git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15979 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_dev.c | 2 +- .../kernel/drivers/input/ps2_hid_new/ps2_service.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_dev.c b/src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_dev.c index 89f269849e..2d0bbbbfbe 100644 --- a/src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_dev.c +++ b/src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_dev.c @@ -98,7 +98,7 @@ ps2_dev_handle_int(ps2_dev *dev, uint8 data) dev->result_buf_idx++; dev->result_buf_cnt--; if (dev->result_buf_cnt == 0) { - release_sem_etc(dev->result_sem, 0, B_DO_NOT_RESCHEDULE); + release_sem_etc(dev->result_sem, 1, B_DO_NOT_RESCHEDULE); return B_INVOKE_SCHEDULER; } return B_HANDLED_INTERRUPT; diff --git a/src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_service.c b/src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_service.c index aeb19bdd6d..93d3dae0ef 100644 --- a/src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_service.c +++ b/src/add-ons/kernel/drivers/input/ps2_hid_new/ps2_service.c @@ -41,7 +41,9 @@ ps2_service_handle_device_added(ps2_dev *dev) cmd.dev = dev; packet_buffer_write(sServiceCmdBuffer, (const uint8 *)&cmd, sizeof(cmd)); - release_sem_etc(sServiceSem, 0, B_DO_NOT_RESCHEDULE); + release_sem_etc(sServiceSem, 1, B_DO_NOT_RESCHEDULE); + + TRACE(("ps2_service_handle_device_added done\n")); } @@ -56,7 +58,7 @@ ps2_service_handle_device_removed(ps2_dev *dev) cmd.dev = dev; packet_buffer_write(sServiceCmdBuffer, (const uint8 *)&cmd, sizeof(cmd)); - release_sem_etc(sServiceSem, 0, B_DO_NOT_RESCHEDULE); + release_sem_etc(sServiceSem, 1, B_DO_NOT_RESCHEDULE); } @@ -103,6 +105,8 @@ ps2_service_thread(void *arg) // process service commands ps2_service_cmd cmd; + + TRACE(("ps2_service_thread: reading cmd\n")); packet_buffer_read(sServiceCmdBuffer, (uint8 *)&cmd, sizeof(cmd)); switch (cmd.id) {