Added iso9660 driver (not yet working).
[planlOS.git] / system / modules / include / cdi / misc.h
blobac9ec1e1b1ce530ac1c3f2e13b8f4f5038d9a81e
1 /*
2 * Copyright (c) 2007 Kevin Wolf
4 * This program is free software. It comes without any warranty, to
5 * the extent permitted by applicable law. You can redistribute it
6 * and/or modify it under the terms of the Do What The Fuck You Want
7 * To Public License, Version 2, as published by Sam Hocevar. See
8 * http://sam.zoy.org/projects/COPYING.WTFPL for more details.
9 */
11 #ifndef CDI_MISC_H_INCLUDED
12 #define CDI_MISC_H_INCLUDED
14 // TODO: Translate comments
16 #include <stdint.h>
17 #include <cdi.h>
19 /**
20 * Registiert einen neuen IRQ-Handler.
22 * @param irq Nummer des zu reservierenden IRQ
23 * @param handler Handlerfunktion
24 * @param device Geraet, das dem Handler als Parameter uebergeben werden soll
26 void cdi_register_irq(uint8_t irq, void (*handler)(struct cdi_device*),
27 struct cdi_device* device);
29 /**
30 * Reserviert physisch zusammenhaengenden Speicher.
32 * @param size Groesse des benoetigten Speichers in Bytes
33 * @param vaddr Pointer, in den die virtuelle Adresse des reservierten
34 * Speichers geschrieben wird.
35 * @param paddr Pointer, in den die physische Adresse des reservierten
36 * Speichers geschrieben wird.
38 * @return 0 wenn der Speicher erfolgreich reserviert wurde, -1 sonst
40 int cdi_alloc_phys_mem(size_t size, void** vaddr, void** paddr);
42 /**
43 * Reserviert physisch zusammenhaengenden Speicher an einer definierten Adresse.
45 * @param size Groesse des benoetigten Speichers in Bytes
46 * @param paddr Physikalische Adresse des angeforderten Speicherbereichs
48 * @return Virtuelle Adresse, wenn Speicher reserviert wurde, sonst 0
50 void* cdi_alloc_phys_addr(size_t size, uintptr_t paddr);
52 /**
53 * Reserviert IO-Ports
55 * @return 0 wenn die Ports erfolgreich reserviert wurden, -1 sonst.
57 int cdi_ioports_alloc(uint16_t start, uint16_t count);
59 /**
60 * Gibt reservierte IO-Ports frei
62 * @return 0 wenn die Ports erfolgreich freigegeben wurden, -1 sonst.
64 int cdi_ioports_free(uint16_t start, uint16_t count);
66 /**
67 * Unterbricht die Ausfuehrung fuer mehrere Millisekunden
69 void cdi_sleep_ms(uint32_t ms);
71 static inline uint64_t cdi_time_offset(unsigned int hour, unsigned int minute,
72 unsigned int second)
74 return hour * 3600 + minute * 60 + second;
76 uint64_t cdi_time_by_date(unsigned int year, unsigned int month,
77 unsigned int day);
79 #endif