#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
#define STOP 0
#define WRITE 1
#define READ 2
void vfunc(unsigned action, ...)
{
va_list ap;
while ((action == WRITE) || (action == READ))
{
uint8_t *ptr
= va_arg(ap
, uint8_t*);
printf("action=0x%04x, ptr=%p, len=%d\n", action
, ptr
, len
);
action
= va_arg(ap
, unsigned); }
}
int main(void)
{
uint8_t foo = 55;
uint8_t bar = 66;
uint8_t *p_bar = &(bar);
vfunc(WRITE, &(foo), 1, READ, p_bar, 1, STOP);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPHN0ZGFyZy5oPgoKI2RlZmluZSBTVE9QICAwCiNkZWZpbmUgV1JJVEUgMQojZGVmaW5lIFJFQUQgIDIKCnZvaWQgdmZ1bmModW5zaWduZWQgYWN0aW9uLCAuLi4pCnsKICAgIHZhX2xpc3QgYXA7CgogICAgdmFfc3RhcnQoYXAsIGFjdGlvbik7CgogICAgd2hpbGUgKChhY3Rpb24gPT0gV1JJVEUpIHx8IChhY3Rpb24gPT0gUkVBRCkpCiAgICB7CiAgICAgICAgdWludDhfdCAqcHRyID0gdmFfYXJnKGFwLCB1aW50OF90Kik7CgogICAgICAgIGludCBsZW4gPSB2YV9hcmcoYXAsIGludCk7CgogICAgICAgIHByaW50ZigiYWN0aW9uPTB4JTA0eCwgcHRyPSVwLCBsZW49JWRcbiIsIGFjdGlvbiwgcHRyLCBsZW4pOwoKICAgICAgICBhY3Rpb24gPSB2YV9hcmcoYXAsIHVuc2lnbmVkKTsKICAgIH0KCiAgICB2YV9lbmQoYXApOwp9CgoKaW50IG1haW4odm9pZCkKewogICAgdWludDhfdCBmb28gPSA1NTsKCiAgICB1aW50OF90IGJhciA9IDY2OwoKICAgIHVpbnQ4X3QgKnBfYmFyID0gJihiYXIpOwoKICAgIHZmdW5jKFdSSVRFLCAmKGZvbyksIDEsIFJFQUQsIHBfYmFyLCAxLCBTVE9QKTsKCiAgICByZXR1cm4gMDsKfQo=