00001 #include <stdio.h>
00002 #include <stdlib.h>
00003 #include <unistd.h>
00004 #include <sys/types.h>
00005 #include <string.h>
00006 #include <aquosa/qres_lib.h>
00007 #include <proc/wchan.h>
00008 #include <proc/version.h>
00009 #include <proc/readproc.h>
00010 #include <proc/sysinfo.h>
00011 #include <proc/sig.h>
00012
00013 #define PROC_ONLY_FLAGS (PROC_FILLENV|PROC_FILLARG|PROC_FILLCOM|PROC_FILLMEM|PROC_FILLSTAT)
00014
00015 int main(int argc, char *argv[])
00016 {
00017 qres_params_t params;
00018 proc_t buf;
00019 PROCTAB* ptp;
00020 unsigned int flags = PROC_ONLY_FLAGS;
00021 qres_sid_t sid;
00022
00023 if (argc < 4) {
00024 printf("Usage: %s Q Q_min P \n", argv[0]);
00025 return -1;
00026 }
00027
00028 qos_chk_ok_exit(qres_init());
00029
00030 params.Q = atoi(argv[1]);
00031 params.Q_min = atoi(argv[2]);
00032 params.P = atoi(argv[3]);
00033 params.flags = 0;
00034 qos_chk_ok_exit(qres_create_server(¶ms, &sid));
00035 qos_chk_ok_exit(qres_attach_thread(sid, 0, 0));
00036
00037 qos_chk_ok_exit(qres_get_sid(0, 0, &sid));
00038
00039 ptp = openproc(flags);
00040
00041 if(!ptp) {
00042 fprintf(stderr, "Error: can not access /proc.\n");
00043 exit(1);
00044 }
00045
00046 memset(&buf, '#', sizeof(proc_t));
00047
00048 while(readproc(ptp,&buf))
00049 #if 1
00050 if ((buf.rtprio < 60) && (buf.tid < 3 || buf.tid > 6))
00051 #endif
00052 {
00053 fprintf (stderr, "Adding %d to server %d with priority %lu [%s]\n", buf.tid, sid, buf.rtprio, buf.cmdline ? buf.cmdline[0] : "Unknown");
00054 fflush(stderr);
00055 qos_chk_ok_exit(qres_attach_thread(sid, buf.tid, buf.tid));
00056 fprintf (stderr, "Done.\n");
00057 fflush(stderr);
00058 }
00059 else
00060 fprintf (stderr, "Skipping %d with priority %lu [%s]\n", buf.tid, buf.rtprio, buf.cmdline ? buf.cmdline[0] : "Unknown");
00061
00062 qres_cleanup();
00063
00064 return 1;
00065 }