Changes in kernel/generic/src/ipc/event.c [cfaa35a:8a637a4] in mainline
- File:
-
- 1 edited
-
kernel/generic/src/ipc/event.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/event.c
rcfaa35a r8a637a4 58 58 } 59 59 60 static event_t *evno2event(int evno, task_t *t )60 static event_t *evno2event(int evno, task_t *task) 61 61 { 62 62 ASSERT(evno < EVENT_TASK_END); 63 63 64 64 event_t *event; 65 65 66 66 if (evno < EVENT_END) 67 67 event = &events[(event_type_t) evno]; 68 68 else 69 event = &t ->events[(event_task_type_t) evno - EVENT_END];70 69 event = &task->events[(event_task_type_t) evno - EVENT_END]; 70 71 71 return event; 72 72 } … … 86 86 event_initialize(evno2event(i, task)); 87 87 } 88 89 88 90 89 /** Unsubscribe kernel events associated with an answerbox … … 252 251 * 253 252 * @return EOK if the subscription was successful. 254 * @return EEXIST Sif the notifications of the given type are253 * @return EEXIST if the notifications of the given type are 255 254 * already subscribed. 256 255 * … … 260 259 { 261 260 int res; 262 261 263 262 spinlock_lock(&event->lock); 264 263 … … 270 269 res = EOK; 271 270 } else 272 res = EEXISTS; 271 res = EEXIST; 272 273 spinlock_unlock(&event->lock); 274 275 return res; 276 } 277 278 /** Unsubscribe event notifications 279 * 280 * @param evno Event type. 281 * @param answerbox Answerbox used to send the notifications to. 282 * 283 * @return EOK if the subscription was successful. 284 * @return EEXIST if the notifications of the given type are 285 * already subscribed. 286 * 287 */ 288 static int event_unsubscribe(event_t *event, answerbox_t *answerbox) 289 { 290 int res; 291 292 spinlock_lock(&event->lock); 293 294 if (event->answerbox == answerbox) { 295 event->answerbox = NULL; 296 event->counter = 0; 297 event->imethod = 0; 298 event->masked = false; 299 res = EOK; 300 } else 301 res = ENOENT; 273 302 274 303 spinlock_unlock(&event->lock); … … 297 326 } 298 327 299 /** Event notification s yscall wrapper328 /** Event notification subscription syscall wrapper 300 329 * 301 330 * @param evno Event type to subscribe. … … 305 334 * @return EOK on success. 306 335 * @return ELIMIT on unknown event type. 307 * @return EEXIST Sif the notifications of the given type are336 * @return EEXIST if the notifications of the given type are 308 337 * already subscribed. 309 338 * 310 339 */ 311 sysarg_t sys_ event_subscribe(sysarg_t evno, sysarg_t imethod)340 sysarg_t sys_ipc_event_subscribe(sysarg_t evno, sysarg_t imethod) 312 341 { 313 342 if (evno >= EVENT_TASK_END) … … 316 345 return (sysarg_t) event_subscribe(evno2event(evno, TASK), 317 346 (sysarg_t) imethod, &TASK->answerbox); 347 } 348 349 /** Event notification unsubscription syscall wrapper 350 * 351 * @param evno Event type to unsubscribe. 352 * 353 * @return EOK on success. 354 * @return ELIMIT on unknown event type. 355 * @return ENOENT if the notification of the given type is not 356 subscribed. 357 * 358 */ 359 sysarg_t sys_ipc_event_unsubscribe(sysarg_t evno) 360 { 361 if (evno >= EVENT_TASK_END) 362 return ELIMIT; 363 364 return (sysarg_t) event_unsubscribe(evno2event(evno, TASK), 365 &TASK->answerbox); 318 366 } 319 367 … … 331 379 * 332 380 */ 333 sysarg_t sys_ event_unmask(sysarg_t evno)381 sysarg_t sys_ipc_event_unmask(sysarg_t evno) 334 382 { 335 383 if (evno >= EVENT_TASK_END)
Note:
See TracChangeset
for help on using the changeset viewer.
