[Pdbg] [PATCH v2 08/15] main: Switch to path based target selection
Alistair Popple
alistair at popple.id.au
Tue Nov 13 15:16:22 AEDT 2018
Looks good, happy to see this code start to disappear.
> @@ -523,19 +519,12 @@ static bool parse_options(int argc, char *argv[])
>
> void target_select(struct pdbg_target *target)
> {
> - /* We abuse the private data pointer atm to indicate the target is
> - * selected */
> - pdbg_target_priv_set(target, (void *) 1);
> -}
> -
> -void target_unselect(struct pdbg_target *target)
> -{
> - pdbg_target_priv_set(target, NULL);
> + path_target_add(target);
Do you think there's any value in keeping this function rather than just
changing the existing code to call path_target_add() directly? It's not part
of any external API so it seems to just add an unnecessary indirection.
> }
>
> bool target_selected(struct pdbg_target *target)
> {
> - return (bool) pdbg_target_priv(target);
> + return path_target_selected(target);
Ditto.
- Alistair
> }
>
> /* Returns the sum of return codes. This can be used to count how many
> targets the callback was run on. */ @@ -554,7 +543,6 @@ int
> for_each_child_target(char *class, struct pdbg_target *parent,
>
> index = pdbg_target_index(target);
> assert(index != -1);
> - pdbg_target_probe(target);
> status = pdbg_target_status(target);
> if (status != PDBG_TARGET_ENABLED)
> continue;
> @@ -578,7 +566,6 @@ int for_each_target(char *class, int (*cb)(struct
> pdbg_target *, uint32_t, uint6
>
> index = pdbg_target_index(target);
> assert(index != -1);
> - pdbg_target_probe(target);
> status = pdbg_target_status(target);
> if (status != PDBG_TARGET_ENABLED)
> continue;
> @@ -603,8 +590,6 @@ void for_each_target_release(char *class)
>
> static bool target_selection(void)
> {
> - struct pdbg_target *fsi, *pib, *chip, *thread;
> -
> switch (backend) {
> #ifdef TARGET_ARM
> case I2C:
> @@ -671,63 +656,17 @@ static bool target_selection(void)
> return false;
> }
>
> - /* At this point we should have a device-tree loaded. We want
> - * to walk the tree and disabled nodes we don't care about
> - * prior to probing. */
> - pdbg_for_each_class_target("pib", pib) {
> - int proc_index = pdbg_target_index(pib);
> -
> - if (backend == I2C && device_node)
> - pdbg_target_set_property(pib, "bus", device_node,
strlen(device_node) +
> 1); -
> - if (processorsel[proc_index]) {
> - target_select(pib);
> - pdbg_for_each_target("core", pib, chip) {
> - int chip_index = pdbg_target_index(chip);
> - if (pdbg_parent_index(chip, "pib") != proc_index)
> - continue;
> -
> - if (chipsel[proc_index][chip_index]) {
> - target_select(chip);
> - pdbg_for_each_target("thread", chip, thread) {
> - int thread_index = pdbg_target_index(thread);
> - if (threadsel[proc_index][chip_index][thread_index])
> - target_select(thread);
> - else
> - target_unselect(thread);
> - }
> - } else
> - target_unselect(chip);
> - }
> -
> - /* This is kinda broken as we're overloading what '-c'
> - * means - it's now up to each command to select targets
> - * based on core/chiplet. We really need a better
> - * solution to target selection. */
> - pdbg_for_each_target("chiplet", pib, chip) {
> - int chip_index = pdbg_target_index(chip);
> - if (chipsel[proc_index][chip_index]) {
> - target_select(chip);
> - } else
> - target_unselect(chip);
> - }
> - } else
> - target_unselect(pib);
> - }
> -
> - pdbg_for_each_class_target("fsi", fsi) {
> - int index = pdbg_target_index(fsi);
> - if (processorsel[index])
> - target_select(fsi);
> - else
> - target_unselect(fsi);
> - }
> -
> if (pathsel_count) {
> if (!path_target_parse(pathsel, pathsel_count))
> return false;
> }
>
> + if (!path_target_present()) {
> + printf("No valid targets found or specified. Try adding -p/-c/-t
options
> to specify a target.\n"); + printf("Alternatively run 'pdbg -a probe' to
> get a list of all valid targets\n"); + return false;
> + }
> +
> return true;
> }
>
> @@ -860,8 +799,5 @@ found_action:
> if (rc > 0)
> return 0;
>
> - printf("No valid targets found or specified. Try adding -p/-c/-t options
> to specify a target.\n"); - printf("Alternatively run '%s -a probe' to get
> a list of all valid targets\n", - basename(argv[0]));
> return 1;
> }
More information about the Pdbg
mailing list