From 58da9ac9e56cf6c1ecf4f5af8601d40e64b0cf19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 22 Aug 2006 13:23:38 +0000 Subject: [PATCH] moved from cbuf to ring_buffer, untested git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18563 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/midi/usb_midi/Jamfile | 1 + .../kernel/drivers/midi/usb_midi/usb_midi.c | 14 ++++++----- .../kernel/drivers/midi/usb_midi/usb_midi.h | 24 ++----------------- 3 files changed, 11 insertions(+), 28 deletions(-) diff --git a/src/add-ons/kernel/drivers/midi/usb_midi/Jamfile b/src/add-ons/kernel/drivers/midi/usb_midi/Jamfile index f4a6b18e0f..d88ae35b0b 100644 --- a/src/add-ons/kernel/drivers/midi/usb_midi/Jamfile +++ b/src/add-ons/kernel/drivers/midi/usb_midi/Jamfile @@ -6,6 +6,7 @@ if $(TARGET_PLATFORM) != haiku { UseHeaders [ FDirName $(HAIKU_TOP) headers os drivers ] : true ; # We need the public usb headers also when not compiling for Haiku. } +UsePrivateHeaders [ FDirName kernel util ] ; KernelAddon usb_midi : kernel drivers bin : usb_midi.c diff --git a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c index b596458d71..b025b06b2c 100644 --- a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c +++ b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c @@ -93,7 +93,7 @@ create_device(const usb_device *dev, const usb_interface_info *ii, uint16 ifno) my_dev->open_fds = NULL; my_dev->active = true; my_dev->flags = 0; - my_dev->cbuf = cbuf_init(384); + my_dev->rbuf = create_ring_buffer(384); my_dev->total_report_size = sizeof(usb_midi_event_packet); return my_dev; @@ -103,9 +103,9 @@ void remove_device (my_device_info *my_dev) { assert (my_dev != NULL); - if (my_dev->cbuf != NULL) { - cbuf_delete(my_dev->cbuf); - my_dev->cbuf = NULL; + if (my_dev->rbuf != NULL) { + delete_ring_buffer(my_dev->rbuf); + my_dev->rbuf = NULL; } delete_area (my_dev->buffer_area); @@ -136,7 +136,7 @@ interpret_midi_buffer(my_device_info *my_dev) { usb_midi_event_packet *packet = my_dev->buffer; - cbuf_putn(my_dev->cbuf, packet->midi, sizeof(packet->midi)); + ring_buffer_write(my_dev->rbuf, packet->midi, sizeof(packet->midi)); release_sem_etc(my_dev->sem_cb, 3, B_DO_NOT_RESCHEDULE); } @@ -389,7 +389,9 @@ usb_midi_read(driver_cookie *cookie, off_t position, err = acquire_sem_etc(my_dev->sem_cb, 1, B_CAN_INTERRUPT, 0LL); if (err != B_OK) return err; - cbuf_getn(my_dev->cbuf, buf, 1); + acquire_sem (my_dev->sem_lock); + ring_buffer_user_read(my_dev->rbuf, buf, 1); + release_sem (my_dev->sem_lock); *num_bytes = 1; return err; } diff --git a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.h b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.h index b1825f3f90..82c838c189 100644 --- a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.h +++ b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.h @@ -34,27 +34,7 @@ #include #include -/* Undocumented kernel cbuf_* functions */ -struct cbuffer_t; -typedef struct cbuffer_t cbuffer; - -size_t cbuf_getn_no_lock(cbuffer *, char *, size_t); -size_t cbuf_putn_no_lock(cbuffer *, char *, size_t); -cbuffer *cbuf_init(size_t size); -void cbuf_delete(cbuffer *buffer); -char cbuf_get(cbuffer *); -bool cbuf_mt(cbuffer *); -bool cbuf_full(cbuffer *); -status_t cbuf_put(cbuffer *, char); -status_t cbuf_unput(cbuffer *); -void cbuf_flush(cbuffer *); -size_t cbuf_size(cbuffer *); -size_t cbuf_avail(cbuffer *); -size_t cbuf_free(cbuffer *); -size_t cbuf_putn(cbuffer *, void *, size_t num_bytes); -size_t cbuf_getn(cbuffer *, void *, size_t num_bytes); -cpu_status cbuf_lock(cbuffer *); -void cbuf_unlock(cbuffer *, cpu_status); +#include "ring_buffer.h" #define DEBUG 1 #if DEBUG @@ -97,7 +77,7 @@ typedef struct my_device_info uint16 ifno; char name[30]; - cbuffer *cbuf; + struct ring_buffer *rbuf; bool active; int open;