void coopth_sched(void) { assert(_coopth_is_in_thread()); ensure_attached(); /* the check below means that we switch to DOS code, not dosemu code */ assert(get_scheduled() != coopth_get_tid()); switch_state(COOPTH_SCHED); }
int coopth_get_scheduled(void) { assert(_coopth_is_in_thread()); ensure_attached(); return get_scheduled(); }
int main(int argc, char **argv) { int c, opt_index; int verbose = 0; int opt_e = 0, opt_r = 0, opt_s = 0, opt_u = 0; char *server; while ((c=getopt_long(argc, argv, "hersuv", opts, &opt_index)) != -1) { switch (c) { case 'h': print_help(argv[0]); exit(0); break; case 'e': opt_e = 1; break; case 'r': opt_r = 1; break; case 's': opt_s = 1; break; case 'u': opt_u = 1; break; case 'v': verbose++; break; default: print_help(argv[0]); exit(1); break; } } if (optind == argc) { fprintf(stderr, "no server given!\n"); return -1; } server = argv[optind]; if (!is_alive(server)) { printf("%s is not responding.\n", server); return 1; } printf("%s is alive.\n", server); if (cmyth_conn_block_shutdown(control) < 0) { printf("Failed to block backend shutdown!\n"); } if (verbose) { int version, count; cmyth_proglist_t list; long long total, used; printf("libcmyth version %s\n", cmyth_version()); printf("librefmem version %s\n", ref_version()); version = cmyth_conn_get_protocol_version(control); printf("\tprotocol version: %d\n", version); list = cmyth_proglist_get_all_recorded(control); count = cmyth_proglist_get_count(list); printf("\trecordings: %d\n", count); if (cmyth_conn_get_freespace(control, &total, &used) == 0) { printf("\ttotal space: %lld bytes\n", total); printf("\tused space: %lld bytes\n", used); } get_event(server); ref_release(list); } if (opt_e) { get_recordings(verbose); } if (opt_r) { get_recorders(verbose); } if (opt_s) { get_scheduled(verbose); } if (opt_u) { get_upcoming(verbose); } if (cmyth_conn_allow_shutdown(control) < 0) { printf("Failed to allow backend shutdown!\n"); } ref_release(control); if (verbose > 1) { unsigned int refs, bytes; ref_get_usage(&refs, &bytes); printf("Refmem: refs %d\n", refs); printf("Refmem: bytes %d\n", bytes); if (refs > 0) { ref_alloc_show(); } } return 0; }