diff options
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/src/process.c b/src/process.c index 79100eb7a2c..98a47eca7ae 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -1851,10 +1851,9 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) | |||
| 1851 | So have an interrupt jar it loose. */ | 1851 | So have an interrupt jar it loose. */ |
| 1852 | { | 1852 | { |
| 1853 | struct atimer *timer; | 1853 | struct atimer *timer; |
| 1854 | EMACS_TIME offset; | 1854 | EMACS_TIME offset = make_emacs_time (1, 0); |
| 1855 | 1855 | ||
| 1856 | stop_polling (); | 1856 | stop_polling (); |
| 1857 | EMACS_SET_SECS_USECS (offset, 1, 0); | ||
| 1858 | timer = start_atimer (ATIMER_RELATIVE, offset, create_process_1, 0); | 1857 | timer = start_atimer (ATIMER_RELATIVE, offset, create_process_1, 0); |
| 1859 | 1858 | ||
| 1860 | if (forkin >= 0) | 1859 | if (forkin >= 0) |
| @@ -4311,9 +4310,8 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4311 | compute the absolute time to return at. */ | 4310 | compute the absolute time to return at. */ |
| 4312 | if (time_limit || 0 < nsecs) | 4311 | if (time_limit || 0 < nsecs) |
| 4313 | { | 4312 | { |
| 4314 | EMACS_GET_TIME (end_time); | 4313 | timeout = make_emacs_time (time_limit, nsecs); |
| 4315 | EMACS_SET_SECS_NSECS (timeout, time_limit, nsecs); | 4314 | end_time = add_emacs_time (current_emacs_time (), timeout); |
| 4316 | EMACS_ADD_TIME (end_time, end_time, timeout); | ||
| 4317 | } | 4315 | } |
| 4318 | 4316 | ||
| 4319 | while (1) | 4317 | while (1) |
| @@ -4342,18 +4340,18 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4342 | gobble output available now | 4340 | gobble output available now |
| 4343 | but don't wait at all. */ | 4341 | but don't wait at all. */ |
| 4344 | 4342 | ||
| 4345 | EMACS_SET_SECS_USECS (timeout, 0, 0); | 4343 | timeout = make_emacs_time (0, 0); |
| 4346 | } | 4344 | } |
| 4347 | else if (time_limit || 0 < nsecs) | 4345 | else if (time_limit || 0 < nsecs) |
| 4348 | { | 4346 | { |
| 4349 | EMACS_GET_TIME (timeout); | 4347 | EMACS_TIME now = current_emacs_time (); |
| 4350 | if (EMACS_TIME_LE (end_time, timeout)) | 4348 | if (EMACS_TIME_LE (end_time, now)) |
| 4351 | break; | 4349 | break; |
| 4352 | EMACS_SUB_TIME (timeout, end_time, timeout); | 4350 | timeout = sub_emacs_time (end_time, now); |
| 4353 | } | 4351 | } |
| 4354 | else | 4352 | else |
| 4355 | { | 4353 | { |
| 4356 | EMACS_SET_SECS_USECS (timeout, 100000, 0); | 4354 | timeout = make_emacs_time (100000, 0); |
| 4357 | } | 4355 | } |
| 4358 | 4356 | ||
| 4359 | /* Normally we run timers here. | 4357 | /* Normally we run timers here. |
| @@ -4438,7 +4436,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4438 | Atemp = input_wait_mask; | 4436 | Atemp = input_wait_mask; |
| 4439 | Ctemp = write_mask; | 4437 | Ctemp = write_mask; |
| 4440 | 4438 | ||
| 4441 | EMACS_SET_SECS_USECS (timeout, 0, 0); | 4439 | timeout = make_emacs_time (0, 0); |
| 4442 | if ((pselect (max (max_process_desc, max_input_desc) + 1, | 4440 | if ((pselect (max (max_process_desc, max_input_desc) + 1, |
| 4443 | &Atemp, | 4441 | &Atemp, |
| 4444 | #ifdef NON_BLOCKING_CONNECT | 4442 | #ifdef NON_BLOCKING_CONNECT |
| @@ -4590,7 +4588,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4590 | nsecs = XPROCESS (proc)->read_output_delay; | 4588 | nsecs = XPROCESS (proc)->read_output_delay; |
| 4591 | } | 4589 | } |
| 4592 | } | 4590 | } |
| 4593 | EMACS_SET_SECS_NSECS (timeout, 0, nsecs); | 4591 | timeout = make_emacs_time (0, nsecs); |
| 4594 | process_output_skip = 0; | 4592 | process_output_skip = 0; |
| 4595 | } | 4593 | } |
| 4596 | #endif | 4594 | #endif |
| @@ -6426,7 +6424,7 @@ sigchld_handler (int signo) | |||
| 6426 | /* Tell wait_reading_process_output that it needs to wake up and | 6424 | /* Tell wait_reading_process_output that it needs to wake up and |
| 6427 | look around. */ | 6425 | look around. */ |
| 6428 | if (input_available_clear_time) | 6426 | if (input_available_clear_time) |
| 6429 | EMACS_SET_SECS_USECS (*input_available_clear_time, 0, 0); | 6427 | *input_available_clear_time = make_emacs_time (0, 0); |
| 6430 | } | 6428 | } |
| 6431 | 6429 | ||
| 6432 | /* There was no asynchronous process found for that pid: we have | 6430 | /* There was no asynchronous process found for that pid: we have |
| @@ -6444,7 +6442,7 @@ sigchld_handler (int signo) | |||
| 6444 | /* Tell wait_reading_process_output that it needs to wake up and | 6442 | /* Tell wait_reading_process_output that it needs to wake up and |
| 6445 | look around. */ | 6443 | look around. */ |
| 6446 | if (input_available_clear_time) | 6444 | if (input_available_clear_time) |
| 6447 | EMACS_SET_SECS_USECS (*input_available_clear_time, 0, 0); | 6445 | *input_available_clear_time = make_emacs_time (0, 0); |
| 6448 | } | 6446 | } |
| 6449 | 6447 | ||
| 6450 | sigchld_end_of_loop: | 6448 | sigchld_end_of_loop: |
| @@ -6857,9 +6855,8 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 6857 | /* What does time_limit really mean? */ | 6855 | /* What does time_limit really mean? */ |
| 6858 | if (time_limit || 0 < nsecs) | 6856 | if (time_limit || 0 < nsecs) |
| 6859 | { | 6857 | { |
| 6860 | EMACS_GET_TIME (end_time); | 6858 | timeout = make_emacs_time (time_limit, nsecs); |
| 6861 | EMACS_SET_SECS_NSECS (timeout, time_limit, nsecs); | 6859 | end_time = add_emacs_time (current_emacs_time (), timeout); |
| 6862 | EMACS_ADD_TIME (end_time, end_time, timeout); | ||
| 6863 | } | 6860 | } |
| 6864 | 6861 | ||
| 6865 | /* Turn off periodic alarms (in case they are in use) | 6862 | /* Turn off periodic alarms (in case they are in use) |
| @@ -6892,18 +6889,18 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 6892 | gobble output available now | 6889 | gobble output available now |
| 6893 | but don't wait at all. */ | 6890 | but don't wait at all. */ |
| 6894 | 6891 | ||
| 6895 | EMACS_SET_SECS_USECS (timeout, 0, 0); | 6892 | timeout = make_emacs_time (0, 0); |
| 6896 | } | 6893 | } |
| 6897 | else if (time_limit || 0 < nsecs) | 6894 | else if (time_limit || 0 < nsecs) |
| 6898 | { | 6895 | { |
| 6899 | EMACS_GET_TIME (timeout); | 6896 | EMACS_TIME now = current_emacs_time (); |
| 6900 | if (EMACS_TIME_LE (end_time, timeout)) | 6897 | if (EMACS_TIME_LE (end_time, now)) |
| 6901 | break; | 6898 | break; |
| 6902 | EMACS_SUB_TIME (timeout, end_time, timeout); | 6899 | timeout = sub_emacs_time (end_time, now); |
| 6903 | } | 6900 | } |
| 6904 | else | 6901 | else |
| 6905 | { | 6902 | { |
| 6906 | EMACS_SET_SECS_USECS (timeout, 100000, 0); | 6903 | timeout = make_emacs_time (100000, 0); |
| 6907 | } | 6904 | } |
| 6908 | 6905 | ||
| 6909 | /* If our caller will not immediately handle keyboard events, | 6906 | /* If our caller will not immediately handle keyboard events, |