Hey,

I have some problems with pointers and need some support plz ;-)

int swd_bus_read_ack(swd_ctx_t *swdctx, swd_operation_t operation, char **ack){
  swd_cmd_enqueue_miso_ack(swdctx, ack);
}

int swd_cmd_enqueue_miso_ack(swd_ctx_t *swdctx, char **ack){
 if (swdctx==NULL) return SWD_ERROR_NULLCONTEXT;
 int res;
 swd_cmd_t *cmd;
 cmd=(swd_cmd_t *)calloc(1,sizeof(swd_cmd_t));
 if (cmd==NULL) return SWD_ERROR_OUTOFMEM;
 if (ack!=NULL) *ack=&cmd->ack;
 cmd->bits=SWD_ACK_BITLEN;
 cmd->cmdtype=SWD_CMDTYPE_MISO_ACK;
 res=swd_cmd_enqueue(swdctx, cmd); //should be 1 on success
 if (res<1) free(cmd);
 return res;
}

main(){
int *ack;
swd_bus_read_ack(swdctx, operation, ack);
}

The problem is:
1. I need to use double pointers to return back the address of the
queue element (*ack=&cmd->ack).
2. If I use single pointer *ack the value of the ack is only changed
inside swd_cmd_enqueue_miso_ack() but after its return to
swd_bus_read_ack() the ack value is taken back to the state as it was
before swd_cmd_enqueue_miso_ack() call.
3. I have tried to use single pointer *ack and call
swd_bus_read_ack(swdctx, operation, &ack) but is changes nothing.

This makes impossible to give back data on queue_dp_read(). There is
something wrong with these pointers!!! Help! :-)

Tomek

-- 
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to