Changeset 24abb85d in mainline for kernel/generic/src/ipc
- Timestamp:
- 2017-08-18T23:27:08Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4d76cfc
- Parents:
- e9d15d9
- Location:
- kernel/generic/src/ipc
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/irq.c
re9d15d9 r24abb85d 294 294 * @param box Receiving answerbox. 295 295 * @param inr IRQ number. 296 * @param devno Device number.297 296 * @param imethod Interface and method to be associated with the 298 297 * notification. … … 303 302 * 304 303 */ 305 int ipc_irq_subscribe(answerbox_t *box, inr_t inr, devno_t devno,306 sysarg_t imethod,irq_code_t *ucode)304 int ipc_irq_subscribe(answerbox_t *box, inr_t inr, sysarg_t imethod, 305 irq_code_t *ucode) 307 306 { 308 307 sysarg_t key[] = { 309 (sysarg_t) inr,310 (sysarg_t) devno308 [IRQ_HT_KEY_INR] = (sysarg_t) inr, 309 [IRQ_HT_KEY_MODE] = (sysarg_t) IRQ_HT_MODE_NO_CLAIM 311 310 }; 312 311 … … 334 333 irq_t *irq = &kobj->irq; 335 334 irq_initialize(irq); 336 irq->devno = devno;337 335 irq->inr = inr; 338 336 irq->claim = ipc_irq_top_half_claim; … … 349 347 */ 350 348 irq_spinlock_lock(&irq_uspace_hash_table_lock, true); 351 352 link_t *hlp = hash_table_find(&irq_uspace_hash_table, key);353 if (hlp) {354 irq_t *hirq = hash_table_get_instance(hlp, irq_t, link);355 356 /* hirq is locked */357 irq_spinlock_unlock(&hirq->lock, false);358 code_free(code);359 irq_spinlock_unlock(&irq_uspace_hash_table_lock, true);360 361 kobject_free(TASK, cap);362 return EEXIST;363 }364 365 /* Locking is not really necessary, but paranoid */366 349 irq_spinlock_lock(&irq->lock, false); 367 350 irq_spinlock_lock(&box->irq_lock, false); -
kernel/generic/src/ipc/sysipc.c
re9d15d9 r24abb85d 801 801 * 802 802 * @param inr IRQ number. 803 * @param devno Device number.804 803 * @param imethod Interface and method to be associated with the notification. 805 804 * @param ucode Uspace pointer to the top-half pseudocode. … … 810 809 * 811 810 */ 812 sysarg_t sys_ipc_irq_subscribe(inr_t inr, devno_t devno, sysarg_t imethod, 813 irq_code_t *ucode) 811 sysarg_t sys_ipc_irq_subscribe(inr_t inr, sysarg_t imethod, irq_code_t *ucode) 814 812 { 815 813 if (!(perm_get(TASK) & PERM_IRQ_REG)) 816 814 return EPERM; 817 815 818 return ipc_irq_subscribe(&TASK->answerbox, inr, devno,imethod, ucode);816 return ipc_irq_subscribe(&TASK->answerbox, inr, imethod, ucode); 819 817 } 820 818
Note:
See TracChangeset
for help on using the changeset viewer.