- Timestamp:
- Oct 3, 2009, 10:11:30 AM (15 years ago)
- Branches:
- master, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 340c3e7
- Parents:
- e2f7963
- git-author:
- Nelson Elhage <nelhage@mit.edu> (09/14/09 21:06:14)
- git-committer:
- Nelson Elhage <nelhage@mit.edu> (10/03/09 10:11:30)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
select.c
rc79a047 r40bda84 325 325 } 326 326 327 void owl_select_handle_intr(void) 327 void owl_select_mask_signals(sigset_t *oldmask) { 328 sigset_t set; 329 330 sigemptyset(&set); 331 sigaddset(&set, SIGINT); 332 sigaddset(&set, SIGTSTP); 333 sigprocmask(SIG_BLOCK, &set, oldmask); 334 } 335 336 void owl_select_handle_intr(sigset_t *restore) 328 337 { 329 338 owl_input in; 330 339 331 340 owl_global_unset_interrupted(&g); 332 owl_function_unmask_sigint(NULL); 341 342 sigprocmask(SIG_SETMASK, restore, NULL); 333 343 334 344 in.ch = in.uch = owl_global_get_startup_tio(&g)->c_cc[VINTR]; 335 345 owl_process_input_char(in); 346 } 347 348 void owl_select_check_tstp() { 349 if(owl_global_is_sigstp(&g)) { 350 owl_function_makemsg("Use :suspend to suspend."); 351 owl_global_unset_got_sigstp(&g); 352 } 336 353 } 337 354 … … 347 364 owl_select_process_timers(&timeout); 348 365 349 owl_function_mask_sigint(&mask); 366 owl_select_mask_signals(&mask); 367 368 owl_select_check_tstp(); 350 369 if(owl_global_is_interrupted(&g)) { 351 owl_select_handle_intr( );370 owl_select_handle_intr(&mask); 352 371 return; 353 372 } … … 381 400 /* END AIM HACK */ 382 401 383 384 402 ret = pselect(max_fd+1, &r, &aim_wfds, &e, &timeout, &mask); 385 403 386 404 if(ret < 0 && errno == EINTR) { 405 owl_select_check_tstp(); 387 406 if(owl_global_is_interrupted(&g)) { 388 owl_select_handle_intr(); 389 } 407 owl_select_handle_intr(NULL); 408 } 409 sigprocmask(SIG_SETMASK, &mask, NULL); 390 410 return; 391 411 } 392 412 393 owl_function_unmask_sigint(NULL);413 sigprocmask(SIG_SETMASK, &mask, NULL); 394 414 395 415 if(ret > 0) {
Note: See TracChangeset
for help on using the changeset viewer.