Commit | Line | Data |
---|---|---|
34e49164 C |
1 | int do_setitimer(int which, struct itimerval *value, |
2 | struct itimerval *ovalue) | |
3 | { | |
4 | unsigned long expire; | |
5 | cputime_t cputime; | |
6 | int k; | |
7 | if (ovalue && (k = do_getitimer(which, ovalue)) < 0) | |
8 | return k; | |
9 | switch (which) { | |
10 | case ITIMER_VIRTUAL: | |
11 | cputime = timeval_to_cputime(&value->it_value); | |
12 | if (cputime_gt(cputime, cputime_zero)) | |
13 | cputime = cputime_add(cputime, | |
14 | jiffies_to_cputime(1)); | |
15 | current->it_virt_value = cputime; | |
16 | cputime = timeval_to_cputime(&value->it_interval); | |
17 | current->it_virt_incr = cputime; | |
18 | break; | |
19 | case ITIMER_PROF: | |
20 | cputime = timeval_to_cputime(&value->it_value); | |
21 | if (cputime_gt(cputime, cputime_zero)) | |
22 | cputime = cputime_add(cputime, | |
23 | jiffies_to_cputime(1)); | |
24 | current->it_prof_value = cputime; | |
25 | cputime = timeval_to_cputime(&value->it_interval); | |
26 | current->it_prof_incr = cputime; | |
27 | break; | |
28 | default: | |
29 | return -EINVAL; | |
30 | } | |
31 | return 0; | |
32 | } |