static int set_tapelog_enabled(int value, void *param) { int val = value ? 1 : 0; if (tapelog_enabled == val) { return 0; } if (val) { if (enable_tapelog() < 0) { return -1; } tapelog_list_item = tapeport_device_register(&tapelog_device); if (tapelog_list_item == NULL) { disable_tapelog(); return -1; } } else { disable_tapelog(); tapeport_device_unregister(tapelog_list_item); tapelog_list_item = NULL; } tapelog_enabled = val; return 0; }
void tapeport_resources_shutdown(void) { tapeport_device_list_t *current = tapeport_head.next; tapeport_snapshot_list_t *c = tapeport_snapshot_head.next; while (current) { tapeport_device_unregister(current); current = tapeport_head.next; } while (c) { tapeport_snapshot_unregister(c); c = tapeport_snapshot_head.next; } }
static int set_tape_diag_586220_harness_enabled(int value, void *param) { int val = value ? 1 : 0; if (tape_diag_586220_harness_enabled == val) { return 0; } if (val) { tape_diag_586220_harness_list_item = tapeport_device_register(&tape_diag_586220_harness_device); if (tape_diag_586220_harness_list_item == NULL) { return -1; } } else { tapeport_device_unregister(tape_diag_586220_harness_list_item); tape_diag_586220_harness_list_item = NULL; } tape_diag_586220_harness_enabled = val; return 0; }
static int set_sense_dongle_enabled(int value, void *param) { int val = value ? 1 : 0; if (sense_dongle_enabled == val) { return 0; } if (val) { sense_dongle_list_item = tapeport_device_register(&sense_dongle_device); if (sense_dongle_list_item == NULL) { return -1; } tapeport_set_tape_sense(1, sense_dongle_device.id); } else { tapeport_device_unregister(sense_dongle_list_item); sense_dongle_list_item = NULL; } sense_dongle_enabled = val; return 0; }
static int set_datasette_enable(int value, void *param) { int val = value ? 1 : 0; if (datasette_enable == val) { return 0; } if (val) { datasette_list_item = tapeport_device_register(&datasette_device); if (datasette_list_item == NULL) { return -1; } } else { tapeport_device_unregister(datasette_list_item); datasette_list_item = NULL; } datasette_enable = val; return 0; }
static int set_dtlbasic_dongle_enabled(int value, void *param) { int val = value ? 1 : 0; if (dtlbasic_dongle_enabled == val) { return 0; } if (val) { dtlbasic_dongle_list_item = tapeport_device_register(&dtlbasic_dongle_device); if (dtlbasic_dongle_list_item == NULL) { return -1; } dtlbasic_counter = -1; dtlbasic_state = DTLBASIC_DONGLE_IDLE; } else { tapeport_device_unregister(dtlbasic_dongle_list_item); dtlbasic_dongle_list_item = NULL; } dtlbasic_dongle_enabled = val; return 0; }