vfs: check userland buffers before reading them.
[haiku.git] / src / add-ons / kernel / drivers / audio / null / driver.h
blobd31b6910554cedbb9d8674298ae1e15c197426e8
1 /*
2 * Copyright 2007 Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef NULL_AUDIO_DRIVER_H
6 #define NULL_AUDIO_DRIVER_H
8 #include <drivers/driver_settings.h>
9 #include <drivers/Drivers.h>
10 #include <drivers/KernelExport.h>
12 #include <hmulti_audio.h>
13 #include <string.h>
14 #include <stdlib.h>
16 #define FRAMES_PER_BUFFER 1024
17 #define MULTI_AUDIO_BASE_ID 1024
18 #define MULTI_AUDIO_DEV_PATH "audio/hmulti"
19 #define MULTI_AUDIO_MASTER_ID 0
20 #define STRMINBUF 2
21 #define STRMAXBUF 2
23 typedef struct {
24 spinlock lock;
25 int bits;
27 void* buffers[STRMAXBUF];
28 uint32 num_buffers;
29 uint32 num_channels;
30 uint32 format;
31 uint32 rate;
33 uint32 buffer_length;
34 sem_id buffer_ready_sem;
35 uint32 frames_count;
36 uint32 buffer_cycle;
37 bigtime_t real_time;
39 area_id buffer_area;
40 } device_stream_t;
42 typedef struct {
43 device_stream_t playback_stream;
44 device_stream_t record_stream;
46 thread_id interrupt_thread;
47 bool running;
48 } device_t;
50 extern device_hooks driver_hooks;
51 int32 format_to_sample_size(uint32 format);
53 status_t multi_audio_control(void* cookie, uint32 op, void* arg, size_t len);
55 status_t null_hw_create_virtual_buffers(device_stream_t* stream, const char* name);
56 status_t null_start_hardware(device_t* device);
57 void null_stop_hardware(device_t* device);
59 #endif /* NULL_AUDIO_DRIVER_H */