Rev 1877 | Rev 1923 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1877 | Rev 1888 | ||
|---|---|---|---|
| Line 24... | Line 24... | ||
| 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | */ |
27 | */ |
| 28 | 28 | ||
| 29 | /** @addtogroup genericipc |
29 | /** @addtogroup genericipc |
| 30 | * @{ |
30 | * @{ |
| 31 | */ |
31 | */ |
| 32 | /** @file |
32 | /** @file |
| 33 | */ |
33 | */ |
| 34 | 34 | ||
| Line 164... | Line 164... | ||
| 164 | typedef struct answerbox_s answerbox_t; |
164 | typedef struct answerbox_s answerbox_t; |
| 165 | typedef struct phone_s phone_t; |
165 | typedef struct phone_s phone_t; |
| 166 | typedef struct { |
166 | typedef struct { |
| 167 | unative_t args[IPC_CALL_LEN]; |
167 | unative_t args[IPC_CALL_LEN]; |
| 168 | phone_t *phone; |
168 | phone_t *phone; |
| 169 | }ipc_data_t; |
169 | } ipc_data_t; |
| 170 | 170 | ||
| 171 | struct answerbox_s { |
171 | struct answerbox_s { |
| 172 | SPINLOCK_DECLARE(lock); |
172 | SPINLOCK_DECLARE(lock); |
| 173 | 173 | ||
| 174 | task_t *task; |
174 | task_t *task; |
| Line 215... | Line 215... | ||
| 215 | answerbox_t *callerbox; |
215 | answerbox_t *callerbox; |
| 216 | 216 | ||
| 217 | unative_t private; /**< Private data to internal IPC */ |
217 | unative_t private; /**< Private data to internal IPC */ |
| 218 | 218 | ||
| 219 | ipc_data_t data; /**< Data passed from/to userspace */ |
219 | ipc_data_t data; /**< Data passed from/to userspace */ |
| 220 | }call_t; |
220 | } call_t; |
| 221 | 221 | ||
| 222 | extern void ipc_init(void); |
222 | extern void ipc_init(void); |
| 223 | extern call_t * ipc_wait_for_call(answerbox_t *box, uint32_t usec, int flags); |
223 | extern call_t * ipc_wait_for_call(answerbox_t *box, uint32_t usec, int flags); |
| 224 | extern void ipc_answer(answerbox_t *box, call_t *request); |
224 | extern void ipc_answer(answerbox_t *box, call_t *request); |
| 225 | extern int ipc_call(phone_t *phone, call_t *call); |
225 | extern int ipc_call(phone_t *phone, call_t *call); |