#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#define LOOPS 100000000
static void loop(volatile unsigned int count) {
while(count--) { }
}
static int times_dispatched(long *vol, long *invol) {
struct rusage usage;
int err;
if ((err = getrusage(RUSAGE_SELF, &usage)) != 0) {
return err;
}
*vol = usage.ru_nvcsw;
*invol = usage.ru_nivcsw;
return 0;
}
int main(void) {
long vol, invol;
loop(LOOPS);
if (times_dispatched(&vol, &invol) != 0) {
fprintf(stderr
, "Unable to get dispatch stats"); }
printf("Context switches: %ld voluntarily, %ld involuntarily\n", vol, invol);
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgoKI2RlZmluZSBMT09QUyAxMDAwMDAwMDAKCnN0YXRpYyB2b2lkIGxvb3Aodm9sYXRpbGUgdW5zaWduZWQgaW50IGNvdW50KSB7CiAgICB3aGlsZShjb3VudC0tKSB7IH0KfQoKc3RhdGljIGludCB0aW1lc19kaXNwYXRjaGVkKGxvbmcgKnZvbCwgbG9uZyAqaW52b2wpIHsKICAgIHN0cnVjdCBydXNhZ2UgdXNhZ2U7CiAgICBpbnQgZXJyOwoKICAgIGlmICgoZXJyID0gZ2V0cnVzYWdlKFJVU0FHRV9TRUxGLCAmdXNhZ2UpKSAhPSAwKSB7CiAgICAgICAgcmV0dXJuIGVycjsKICAgIH0KCiAgICAqdm9sICAgPSB1c2FnZS5ydV9udmNzdzsKICAgICppbnZvbCA9IHVzYWdlLnJ1X25pdmNzdzsKCiAgICByZXR1cm4gMDsKfQoKaW50IG1haW4odm9pZCkgewogICAgbG9uZyB2b2wsIGludm9sOwoKICAgIGxvb3AoTE9PUFMpOwoKICAgIGlmICh0aW1lc19kaXNwYXRjaGVkKCZ2b2wsICZpbnZvbCkgIT0gMCkgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGdldCBkaXNwYXRjaCBzdGF0cyIpOwogICAgICAgIGV4aXQoMSk7CiAgICB9CiAgICBwcmludGYoIkNvbnRleHQgc3dpdGNoZXM6ICVsZCB2b2x1bnRhcmlseSwgJWxkIGludm9sdW50YXJpbHlcbiIsCiAgICAgICAgdm9sLCBpbnZvbCk7CgogICAgcmV0dXJuIDA7Cn0K