Skip the shitty e1000s on c89
[akaros.git] / kern / kfs / lockprov.sh
1 #!/bin/ash
2
3 # will run lock_test with whatever arguments are passed in.  default arguments
4 # are -wMAX_VCORES and -l10000.
5
6 # TODO: take a param up to MAXVC for how many cores we preempt per loop
7 # TODO: make a program that does the preemption, instead of the script.  it
8 # takes around 2ms to spawn, run, and wait on a program, which messes with the
9 # timing.  When we do this, pull in the vcore shuffling code from prov.c and
10 # have that be an option.
11 # TODO: have better options for the two preempt styles (periodic, vs total)
12
13 if [ $# -lt 2 ]
14 then
15         echo Usage: $0 PREEMPT_DELAY_USEC ARGS_FOR_LOCK_TEST
16         exit
17 fi
18
19 PREEMPT_DELAY=$1
20
21 shift
22
23 # for suppressing output later (no /dev/null, and also append doesn't work)
24 echo "" >> tmpfile
25
26 # retval of max_vcores is the value
27 max_vcores
28 MAXVC=$?
29 # pth_test exists to hog the machine
30 pthread_test 100 999999999 $MAXVC >> tmpfile 2>&1 &
31 PTHPID=$!
32 echo Launch pth_test, pid was $PTHPID
33
34 # if arguments, like -w are repeated, the second one is used
35 lock_test -w $MAXVC -l 10000 $@ &
36 LOCKPID=$!
37 echo Launch lock_test, pid was $LOCKPID
38
39 # while lock_test is still alive, we preempt every so often, then give it back.
40 # using the retval of prov -p$LOCKPID to tell us if lock_test is around
41 RET=0
42 INC=0
43
44 # This is the preempt, return, preempt return cycle
45 while [ $RET -eq 0 ]; do
46         prov -tc -p$LOCKPID -m >> tmpfile 2>&1
47         RET=$?
48
49         usleep $PREEMPT_DELAY
50         
51         prov -tc -p$PTHPID -v1 >> tmpfile 2>&1
52         prov -tc -p$PTHPID -v2 >> tmpfile 2>&1
53
54         usleep $PREEMPT_DELAY
55
56         let INC=$INC+1
57 done
58
59 ## This is the 'run for a bit, preempt a lot just once, then return all style
60 #prov -tc -p$LOCKPID -m >> tmpfile 2>&1
61 #usleep $PREEMPT_DELAY
62 #prov -tc -p$PTHPID -v1 >> tmpfile 2>&1
63 #prov -tc -p$PTHPID -v2 >> tmpfile 2>&1
64 #prov -tc -p$PTHPID -v3 >> tmpfile 2>&1
65 #prov -tc -p$PTHPID -v4 >> tmpfile 2>&1
66 #prov -tc -p$PTHPID -v5 >> tmpfile 2>&1
67 #prov -tc -p$PTHPID -v6 >> tmpfile 2>&1
68 #prov -tc -p$PTHPID -v7 >> tmpfile 2>&1
69 #prov -tc -p$PTHPID -v8 >> tmpfile 2>&1
70 #prov -tc -p$PTHPID -v9 >> tmpfile 2>&1
71 #usleep $PREEMPT_DELAY
72 #prov -tc -p$LOCKPID -m >> tmpfile 2>&1
73 #
74 #while [ $RET -eq 0 ]; do
75 #       prov -tc -p$LOCKPID -m >> tmpfile 2>&1
76 #       RET=$?
77 #       usleep $PREEMPT_DELAY
78 #done
79
80 echo All done, killing pth_test.  Did $INC prov-preempt loops.
81 kill -9 $PTHPID