Lines Matching +full:interrupt +full:- +full:affinity
49 #define DELIMIT_AFF '/' /* lgroup affinity from lgroups */
52 #define DELIMIT_RANGE '-' /* range of IDs (eg. lgroup) */
58 #define EXIT_NONFATAL 2 /* non-fatal errors */
63 #define HDR_PLGRP_AFF_GET " PID/LWPID HOME AFFINITY\n"
64 #define HDR_PLGRP_AFF_SET " PID/LWPID HOME AFFINITY\n"
76 #define FMT_HOME "%-6d"
78 #define FMT_THREAD "%8d/%-8d"
100 * Invalid value for lgroup affinity
102 #define LGRP_AFF_INVALID -1
109 #ifndef TEXT_DOMAIN /* should be defined by cc -D */
142 * We bail out as soon as possible when interrupt is set
144 static int interrupt = 0; variable
147 * How many non-fatal errors ocurred
192 gettext("Usage:\t%s [-h] <pid> | <core> [/lwps] ...\n"), progname); in usage()
194 gettext("\t%s [-F] -a <lgroup list> <pid>[/lwps] ...\n"), progname); in usage()
196 gettext("\t%s [-F] -A <lgroup list>/none|weak|strong[,...] " in usage()
199 gettext("\t%s [-F] -H <lgroup list> <pid>[/lwps] ...\n"), progname); in usage()
203 "\t - lgroup ID\n" in usage()
204 "\t - Range of lgroup IDs specified as\n" in usage()
205 "\t\t<start lgroup ID>-<end lgroup ID>\n" in usage()
206 "\t - \"all\"\n" in usage()
207 "\t - \"root\"\n" in usage()
208 "\t - \"leaves\"\n\n")); in usage()
220 interrupt++; in intr()
225 * Return string name for given lgroup affinity
251 * Add a new lgroup into lgroup array in "arg", growing lgroup and affinity
258 if (arg->nlgrps == arg->nelements) { in lgrps_add_lgrp()
259 arg->nelements += LGRP_BITMAP_CHUNK; in lgrps_add_lgrp()
261 arg->lgrps = realloc(arg->lgrps, in lgrps_add_lgrp()
262 arg->nelements * sizeof (lgrp_id_t)); in lgrps_add_lgrp()
263 if (arg->lgrps == NULL) { in lgrps_add_lgrp()
269 arg->affs = realloc(arg->affs, in lgrps_add_lgrp()
270 arg->nelements * sizeof (lgrp_affinity_t)); in lgrps_add_lgrp()
272 if (arg->affs == NULL) { in lgrps_add_lgrp()
279 arg->lgrps[arg->nlgrps] = id; in lgrps_add_lgrp()
280 arg->affs[arg->nlgrps] = LGRP_AFF_INVALID; in lgrps_add_lgrp()
281 arg->nlgrps++; in lgrps_add_lgrp()
317 (*bitmap_nelements - NLGRPS) * sizeof (char)); in lgrps_bitmap_init()
355 * Parse lgroup affinity from given string
357 * Return lgroup affinity or LGRP_AFF_INVALID if string doesn't match any
358 * existing lgroup affinity and return pointer to position just after affinity
376 * Return lgroup affinity matching string in parse_lgrp_affinity()
414 return (-1); in parse_lgrps()
428 * Can be <lgroup ID>[-<lgroup ID>] in parse_lgrps()
475 return (-1); in parse_lgrps()
484 * range (eg. 2,3,4 into 2-4)
517 (void) printf("%d-%d,", (int)start, (int)end); in print_lgrps()
536 (void) printf("%d-%d", (int)start, (int)end); in print_lgrps()
545 * Skip any lgroups set to LGRP_NONE or having invalid affinity.
567 interrupt = 1; in print_affinities()
572 * Group lgroups by affinity in print_affinities()
595 * Skip any lgroups with invalid affinity. in print_affinities()
602 * Print all lgroups with same affinity together in print_affinities()
690 Pargdp->arg_value = LGRP_SYS_AFFINITY_GET; in Plgrp_affinity_get()
691 Pargdp->arg_object = NULL; in Plgrp_affinity_get()
692 Pargdp->arg_type = AT_BYVAL; in Plgrp_affinity_get()
693 Pargdp->arg_inout = AI_INPUT; in Plgrp_affinity_get()
694 Pargdp->arg_size = 0; in Plgrp_affinity_get()
697 Pargdp->arg_value = 0; in Plgrp_affinity_get()
698 Pargdp->arg_object = NULL; in Plgrp_affinity_get()
699 Pargdp->arg_type = AT_BYVAL; in Plgrp_affinity_get()
700 Pargdp->arg_inout = AI_INPUT; in Plgrp_affinity_get()
701 Pargdp->arg_size = 0; in Plgrp_affinity_get()
704 Pargdp->arg_value = 0; in Plgrp_affinity_get()
705 Pargdp->arg_object = &args; in Plgrp_affinity_get()
706 Pargdp->arg_type = AT_BYREF; in Plgrp_affinity_get()
707 Pargdp->arg_inout = AI_INPUT; in Plgrp_affinity_get()
708 Pargdp->arg_size = sizeof (lgrp_affinity_args_t); in Plgrp_affinity_get()
757 Pargdp->arg_value = LGRP_SYS_AFFINITY_SET; in Plgrp_affinity_set()
758 Pargdp->arg_object = NULL; in Plgrp_affinity_set()
759 Pargdp->arg_type = AT_BYVAL; in Plgrp_affinity_set()
760 Pargdp->arg_inout = AI_INPUT; in Plgrp_affinity_set()
761 Pargdp->arg_size = 0; in Plgrp_affinity_set()
764 Pargdp->arg_value = 0; in Plgrp_affinity_set()
765 Pargdp->arg_object = NULL; in Plgrp_affinity_set()
766 Pargdp->arg_type = AT_BYVAL; in Plgrp_affinity_set()
767 Pargdp->arg_inout = AI_INPUT; in Plgrp_affinity_set()
768 Pargdp->arg_size = 0; in Plgrp_affinity_set()
771 Pargdp->arg_value = 0; in Plgrp_affinity_set()
772 Pargdp->arg_object = &args; in Plgrp_affinity_set()
773 Pargdp->arg_type = AT_BYREF; in Plgrp_affinity_set()
774 Pargdp->arg_inout = AI_INPUT; in Plgrp_affinity_set()
775 Pargdp->arg_size = sizeof (lgrp_affinity_args_t); in Plgrp_affinity_set()
785 return (-1); in Plgrp_affinity_set()
816 Pargdp->arg_value = LGRP_SYS_HOME; in Plgrp_home()
817 Pargdp->arg_object = NULL; in Plgrp_home()
818 Pargdp->arg_type = AT_BYVAL; in Plgrp_home()
819 Pargdp->arg_inout = AI_INPUT; in Plgrp_home()
820 Pargdp->arg_size = 0; in Plgrp_home()
823 Pargdp->arg_value = idtype; in Plgrp_home()
824 Pargdp->arg_object = NULL; in Plgrp_home()
825 Pargdp->arg_type = AT_BYVAL; in Plgrp_home()
826 Pargdp->arg_inout = AI_INPUT; in Plgrp_home()
827 Pargdp->arg_size = 0; in Plgrp_home()
830 Pargdp->arg_value = id; in Plgrp_home()
831 Pargdp->arg_object = NULL; in Plgrp_home()
832 Pargdp->arg_type = AT_BYVAL; in Plgrp_home()
833 Pargdp->arg_inout = AI_INPUT; in Plgrp_home()
834 Pargdp->arg_size = 0; in Plgrp_home()
844 return (-1); in Plgrp_home()
892 Ph = plgrp_args->Ph; in do_op()
893 lgrps = plgrp_args->lgrps; in do_op()
894 affs = plgrp_args->affs; in do_op()
895 nlgrps = plgrp_args->nlgrps; in do_op()
897 switch (plgrp_args->op) { in do_op()
903 home = lwpsinfo->pr_lgrp; in do_op()
912 home = lwpsinfo->pr_lgrp; in do_op()
916 * Collect affinity values in do_op()
925 gettext("%s: cannot get affinity" in do_op()
946 old_home = lwpsinfo->pr_lgrp; in do_op()
948 i = plgrp_args->index; in do_op()
973 (void) printf("%*c\n", (int)(width - len), ' '); in do_op()
976 plgrp_args->index = (i + 1) % nlgrps; in do_op()
989 old_home = lwpsinfo->pr_lgrp; in do_op()
993 * affinities and lgroups because user may specify affinity in do_op()
1035 " affinity for lgroup %d" in do_op()
1055 * If the suggested affinity is the same as the current in do_op()
1062 * Set affinity to the new value in do_op()
1069 " %s affinity for lgroup %d" in do_op()
1088 " affinity for lgroup %d" in do_op()
1097 gettext("%s: affinity for" in do_op()
1127 (void) printf("%-*d", in do_op()
1158 (void) printf("%*c", width - len, ' '); in do_op()
1160 (void) printf("%-*d", width, (int)home); in do_op()
1203 if (arg == NULL || interrupt) in Plwp_iter_handler()
1210 Ph = plgrp_args->Ph; in Plwp_iter_handler()
1223 lwpid = lwpsinfo->pr_lwpid; in Plwp_iter_handler()
1224 if (lwpid == pstatus->pr_agentid || in Plwp_iter_handler()
1225 !proc_lwp_in_set(plgrp_args->lwps, lwpid)) in Plwp_iter_handler()
1228 plgrp_args->nthreads++; in Plwp_iter_handler()
1233 (void) printf(FMT_THREAD" ", (int)pstatus->pr_pid, (int)lwpid); in Plwp_iter_handler()
1234 return (do_op(plgrp_args, pstatus->pr_pid, lwpid, lwpsinfo)); in Plwp_iter_handler()
1251 if (plgrp_todo == NULL || interrupt) in do_process()
1275 plgrp_todo->Ph = Ph; in do_process()
1276 plgrp_todo->lwps = lwps; in do_process()
1298 * plgrp [-h] <pid> | <core> [/lwps] ...
1299 * plgrp [-F] -a <lgroup>,... <pid>[/lwps] ...
1300 * plgrp [-F] -H <lgroup>,... <pid>[/lwps] ...
1301 * plgrp [-F] -A <lgroup>,... [/none|weak|strong] ... <pid>[/lwps] ...
1336 * when we're ready instead of when we're not (;-) in main()
1374 while (!interrupt && (c = getopt(argc, argv, "a:A:FhH:")) != -1) { in main()
1376 * Parse option and only allow one option besides -F to be in main()
1383 * Only allow one option (besides -F) to be specified in main()
1395 * Fail if already specified option (besides -F) in main()
1412 " specified for -%c\n\n"), in main()
1419 case 'a': /* Get lgroup affinity */ in main()
1422 * Fail if already specified option (besides -F) in main()
1439 " for -%c\n\n"), in main()
1446 case 'A': /* Set lgroup affinity */ in main()
1449 * Fail if already specified option (besides -F) in main()
1460 * 'affstring' is the unparsed prtion of the affinity in main()
1463 * 'next' is the next affinity specification to parse. in main()
1470 * affstring points to the first affinity in main()
1473 * affinity value separately. in main()
1488 "affinity >%s<\n"), in main()
1519 * Set desired affinity for specified lgroup to in main()
1520 * the specified affinity. in main()
1542 "for -%c\n\n"), progname, c); in main()
1586 for (i = optind; i < argc && !interrupt; i++) { in main()
1598 return ((nerrors ||interrupt) ? EXIT_NONFATAL : EXIT_SUCCESS); in main()