Changeset 91b60499 in mainline for kernel/generic/include
- Timestamp:
- 2017-09-30T06:29:42Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 300f4c4
- Parents:
- d076f16 (diff), 6636fb19 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- kernel/generic/include
- Files:
-
- 1 added
- 1 deleted
- 8 edited
-
adt/hash_table.h (modified) (1 diff)
-
cap/cap.h (added)
-
ddi/device.h (deleted)
-
ddi/irq.h (modified) (6 diffs)
-
ipc/ipc.h (modified) (5 diffs)
-
ipc/ipcrsc.h (modified) (1 diff)
-
ipc/irq.h (modified) (1 diff)
-
ipc/sysipc.h (modified) (1 diff)
-
proc/task.h (modified) (4 diffs)
-
typedefs.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/adt/hash_table.h
rd076f16 r91b60499 82 82 extern link_t *hash_table_find(hash_table_t *h, sysarg_t key[]); 83 83 extern void hash_table_remove(hash_table_t *h, sysarg_t key[], size_t keys); 84 extern void hash_table_remove_item(hash_table_t *h, link_t *item); 84 85 85 86 #endif -
kernel/generic/include/ddi/irq.h
rd076f16 r91b60499 43 43 #include <proc/task.h> 44 44 #include <ipc/ipc.h> 45 #include <mm/slab.h> 46 47 typedef enum { 48 IRQ_HT_KEY_INR, 49 IRQ_HT_KEY_MODE 50 } irq_ht_key_t; 51 52 typedef enum { 53 IRQ_HT_MODE_CLAIM, 54 IRQ_HT_MODE_NO_CLAIM 55 } irq_ht_mode_t; 45 56 46 57 typedef enum { … … 70 81 /** When false, notifications are not sent. */ 71 82 bool notify; 83 /** True if the structure is in irq_uspace_hash_table_table */ 84 bool hashed_in; 72 85 /** Answerbox for notifications. */ 73 86 answerbox_t *answerbox; … … 76 89 /** Arguments that will be sent if the IRQ is claimed. */ 77 90 uint32_t scratch[IPC_CALL_LEN]; 78 /** Top-half pseudocode. */91 /** Top-half IRQ code. */ 79 92 irq_code_t *code; 80 93 /** Counter. */ 81 94 size_t counter; 82 83 /**84 * Link between IRQs that are notifying the same answerbox. The list is85 * protected by the answerbox irq_lock.86 */87 link_t link;88 95 } ipc_notif_cfg_t; 89 96 … … 91 98 * 92 99 * If one device has multiple interrupts, there will be multiple irq_t 93 * instantions with the same devno. 94 * 100 * instantions. 95 101 */ 96 102 typedef struct irq { … … 112 118 */ 113 119 bool preack; 114 115 /** Unique device number. -1 if not yet assigned. */116 devno_t devno;117 120 118 121 /** Actual IRQ number. -1 if not yet assigned. */ … … 139 142 extern hash_table_t irq_uspace_hash_table; 140 143 144 extern slab_cache_t *irq_slab; 145 141 146 extern inr_t last_inr; 142 147 -
kernel/generic/include/ipc/ipc.h
rd076f16 r91b60499 42 42 #include <abi/proc/task.h> 43 43 #include <typedefs.h> 44 45 # define IPC_MAX_PHONES 6444 #include <mm/slab.h> 45 #include <cap/cap.h> 46 46 47 47 struct answerbox; … … 62 62 63 63 /** Structure identifying phone (in TASK structure) */ 64 typedef struct {64 typedef struct phone { 65 65 mutex_t lock; 66 66 link_t link; … … 69 69 ipc_phone_state_t state; 70 70 atomic_t active_calls; 71 kobject_t *kobject; 71 72 } phone_t; 72 73 … … 94 95 /** Notifications from IRQ handlers. */ 95 96 list_t irq_notifs; 96 /** IRQs with notifications to this answerbox. */97 list_t irq_list;98 97 } answerbox_t; 99 98 … … 170 169 } call_t; 171 170 171 extern slab_cache_t *phone_slab; 172 172 173 extern answerbox_t *ipc_phone_0; 173 174 -
kernel/generic/include/ipc/ipcrsc.h
rd076f16 r91b60499 38 38 #include <proc/task.h> 39 39 #include <ipc/ipc.h> 40 #include <cap/cap.h> 40 41 41 42 extern call_t *get_call(sysarg_t); 42 extern int phone_get(sysarg_t, phone_t **); 43 extern int phone_alloc(task_t *); 44 extern bool phone_connect(int, answerbox_t *); 45 extern void phone_dealloc(int); 43 extern cap_handle_t phone_alloc(task_t *); 44 extern bool phone_connect(cap_handle_t, answerbox_t *); 45 extern void phone_dealloc(cap_handle_t); 46 46 47 47 #endif -
kernel/generic/include/ipc/irq.h
rd076f16 r91b60499 47 47 #include <adt/list.h> 48 48 49 extern int ipc_irq_subscribe(answerbox_t *, inr_t, devno_t, sysarg_t,50 irq_code_t *);51 49 52 50 extern irq_ownership_t ipc_irq_top_half_claim(irq_t *); 53 51 extern void ipc_irq_top_half_handler(irq_t *); 54 52 55 extern int ipc_irq_ unsubscribe(answerbox_t *, inr_t, devno_t);56 extern void ipc_irq_cleanup(answerbox_t *);53 extern int ipc_irq_subscribe(answerbox_t *, inr_t, sysarg_t, irq_code_t *); 54 extern int ipc_irq_unsubscribe(answerbox_t *, int); 57 55 58 56 /* -
kernel/generic/include/ipc/sysipc.h
rd076f16 r91b60499 56 56 extern sysarg_t sys_ipc_hangup(sysarg_t); 57 57 58 extern sysarg_t sys_ipc_irq_subscribe(inr_t, devno_t,sysarg_t, irq_code_t *);59 extern sysarg_t sys_ipc_irq_unsubscribe( inr_t, devno_t);58 extern sysarg_t sys_ipc_irq_subscribe(inr_t, sysarg_t, irq_code_t *); 59 extern sysarg_t sys_ipc_irq_unsubscribe(sysarg_t); 60 60 61 61 #ifdef __32_BITS__ -
kernel/generic/include/proc/task.h
rd076f16 r91b60499 60 60 #include <abi/sysinfo.h> 61 61 #include <arch.h> 62 #include <cap/cap.h> 62 63 63 64 #define TASK THE->task … … 65 66 66 67 struct thread; 68 struct cap; 67 69 68 70 /** Task structure. */ … … 95 97 /** Task permissions. */ 96 98 perm_t perms; 99 100 /** Capabilities */ 101 cap_info_t *cap_info; 97 102 98 103 /* IPC stuff */ … … 100 105 /** Receiving communication endpoint */ 101 106 answerbox_t answerbox; 102 103 /** Sending communication endpoints */104 phone_t phones[IPC_MAX_PHONES];105 107 106 108 /** Spinlock protecting the active_calls list. */ -
kernel/generic/include/typedefs.h
rd076f16 r91b60499 49 49 50 50 typedef int32_t inr_t; 51 typedef int32_t devno_t;52 51 53 52 typedef volatile uint8_t ioport8_t;
Note:
See TracChangeset
for help on using the changeset viewer.
