Changeset 2405bb5 in mainline for kernel/generic/include/ipc/ipc.h


Ignore:
Timestamp:
2012-08-15T19:28:43Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7975433
Parents:
691d8d8
Message:

Forget active calls when a task exits.

  • Synchronization between answer and forget.
  • Forgotten calls are not yet properly cleaned-up.
  • Hold the sender task when processing its active calls.
File:
1 edited

Legend:

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

    r691d8d8 r2405bb5  
    106106
    107107typedef struct {
    108         /** Task link. */
     108        /**
     109         * Task link.
     110         * Valid only when the call is not forgotten.
     111         * Protected by the task's active_calls_lock.
     112         */
    109113        link_t ta_link;
    110114
     
    113117       
    114118        unsigned int flags;
     119
     120        /** Protects the forget member. */
     121        SPINLOCK_DECLARE(forget_lock);
     122
     123        /**
     124         * True if the caller 'forgot' this call and donated it to the callee.
     125         * Forgotten calls are discarded upon answering (the answer is not
     126         * delivered) and answered calls cannot be forgotten. Forgotten calls
     127         * also do not figure on the task's active call list.
     128         *
     129         * We keep this separate from the flags so that it is not necessary
     130         * to take a lock when accessing them.
     131         */
     132        bool forget;
    115133       
    116         /** Identification of the caller. */
     134        /**
     135         * Identification of the caller.
     136         * Valid only when the call is not forgotten.
     137         */
    117138        struct task *sender;
    118139       
Note: See TracChangeset for help on using the changeset viewer.