Changeset 01c3bb4 in mainline for kernel/generic/src/ipc/ipcrsc.c


Ignore:
Timestamp:
2017-11-25T15:43:25Z (8 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ce4a21a0
Parents:
98cb5e0d
Message:

Convert call-handling syscalls to capabilities

This commit modifies the behavior of sys_ipc_wait_for_call() to return a
capability handle for requests. This capability handle can be used
either by sys_ipc_answer*() to answer the call or by sys_ipc_forward*()
to forward it further along. Answering or forwarding the call results in
destruction of the respective capability. For requests and
notifications, sys_ipc_wait_for_call() returns CAP_NIL and sets call
flags accordingly.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ipc/ipcrsc.c

    r98cb5e0d r01c3bb4  
    136136#include <cap/cap.h>
    137137#include <mm/slab.h>
    138 
    139 /** Find call_t * in call table according to callid.
    140  *
    141  * @todo Some speedup (hash table?)
    142  *
    143  * @param callid Userspace hash of the call. Currently it is the call structure
    144  *               kernel address.
    145  *
    146  * @return NULL on not found, otherwise pointer to the call structure.
    147  *
    148  */
    149 call_t *get_call(sysarg_t callid)
    150 {
    151         call_t *result = NULL;
    152        
    153         irq_spinlock_lock(&TASK->answerbox.lock, true);
    154        
    155         list_foreach(TASK->answerbox.dispatched_calls, ab_link, call_t, call) {
    156                 if ((sysarg_t) call == callid) {
    157                         result = call;
    158                         break;
    159                 }
    160         }
    161        
    162         irq_spinlock_unlock(&TASK->answerbox.lock, true);
    163         return result;
    164 }
    165138
    166139static bool phone_reclaim(kobject_t *kobj)
Note: See TracChangeset for help on using the changeset viewer.