Changeset bf75e3cb in mainline for kernel


Ignore:
Timestamp:
2011-01-26T20:22:21Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4e7d3dd, 5b7a107, 875c629
Parents:
a0ce870 (diff), 4fe94c66 (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.
Message:

Merge from lp:~jakub/helenos/fs.

Highlights of the merge:

  • the kernel signs each call by the sender's task hash
  • async framework tracks and reference counts connections from the same client task
  • VFS associates the table of open files with the client task rather than with a single connection
  • VFS libc client code now uses async sessions to support parallel requests
  • vfs_file_get() now explicitly adds a reference on the file structure and the newly introduced vfs_file_put() drops it
Location:
kernel/generic
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/ipc/ipc.h

    ra0ce870 rbf75e3cb  
    165165 *                       error is sent back to caller. Otherwise
    166166 *                       the call is accepted and the response is sent back.
    167  *                     - the allocated phoneid is passed to userspace
     167 *                     - the hash of the client task is passed to userspace
     168 *                       (on the receiving side) as ARG4 of the call.
     169 *                     - the hash of the allocated phone is passed to userspace
    168170 *                       (on the receiving side) as ARG5 of the call.
    169171 *
     
    319321typedef struct {
    320322        sysarg_t args[IPC_CALL_LEN];
     323        /** Task which made or forwarded the call with IPC_FF_ROUTE_FROM_ME. */
     324        struct task *task;
     325        /** Phone which made or last masqueraded this call. */
    321326        phone_t *phone;
    322327} ipc_data_t;
  • kernel/generic/src/ipc/ipc.c

    ra0ce870 rbf75e3cb  
    295295                atomic_inc(&phone->active_calls);
    296296                call->data.phone = phone;
     297                call->data.task = TASK;
    297298        }
    298299       
     
    406407                        call->caller_phone = call->data.phone;
    407408                call->data.phone = newphone;
     409                call->data.task = TASK;
    408410        }
    409411       
  • kernel/generic/src/ipc/sysipc.c

    ra0ce870 rbf75e3cb  
    248248                        /* The connection was accepted */
    249249                        phone_connect(phoneid, &answer->sender->answerbox);
     250                        /* Set 'task hash' as arg4 of response */
     251                        IPC_SET_ARG4(answer->data, (sysarg_t) TASK);
    250252                        /* Set 'phone hash' as arg5 of response */
    251253                        IPC_SET_ARG5(answer->data,
Note: See TracChangeset for help on using the changeset viewer.