4 #include <l4/bddf/busdriver_types.h>
5 #include <l4/bddf/busdriver_if_ipc.h>
6 #include <l4/lock/lock.h>
7 #include <l4/dde/fbsd/ata.h>
10 #include <l4/rt_mon/histogram.h>
11 extern rt_mon_histogram_t *rtm_request_duration;
12 extern rt_mon_histogram_t *rtm_request_setup_cpu;
13 extern rt_mon_histogram_t *rtm_request_setup_wall;
16 typedef struct l4ata_disk_info {
17 device_handle_t bddf_device;
18 l4semaphore_t reqloop_start;
21 typedef struct l4ata_req_info {
22 // lock for securing outstanding counter
24 // outstanding bio counter
26 // set to 1 on bio error
28 // associated bddf device
30 // associated bddf request
34 typedef struct l4ata_bio_info {
35 // pointer to request info
37 // first ds associated with this bio
38 struct ds_list_element *first_ds;
39 // number of ds-s associated with this bio (continious from start_ds)
43 #define dad_l4ata_di(dsk) ((l4ata_disk_info_t*)(dsk->client_priv))
44 #define dadrq_l4ata_bi(dadrq) ((l4ata_bio_info_t*)(dadrq->client_priv))
47 int l4ata_init_disk(void);
48 void l4ata_register_disk(dad_disk_t *dsk);
51 void l4ata_request_loop(void *arg);
52 int l4ata_start_request_loop(device_handle_t, void *);
55 bus_generic_req_fn l4ata_handle_generic_request;
56 void l4ata_handle_request(dad_disk_t *dsk, bus_request_t *req);