A dynamic tracer for Linux

ply.h 749B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef _PLY_H
  2. #define _PLY_H
  3. struct node;
  4. struct symtab;
  5. struct prog {
  6. const char *probe;
  7. struct node *ast;
  8. struct symtab *locals;
  9. struct symtab *globals;
  10. /* symtab_t *locals; */
  11. /* symtab_t *globals; */
  12. struct provider *provider;
  13. void *provider_data;
  14. /* ir_t *ir; */
  15. };
  16. struct ctx {
  17. struct prog **progs;
  18. struct symtab *globals;
  19. };
  20. struct func;
  21. struct provider {
  22. const char *name;
  23. int (*probe)(struct prog *);
  24. int (*sym_alloc)(struct prog *, struct node *);
  25. /* int (*resolve)(struct prog *, struct node *); */
  26. /* int (*rewrite_node)(struct prog *, struct node *); */
  27. /* int (*ir_prologue)(struct prog *); */
  28. /* int (*ir_epilogue)(struct prog *); */
  29. };
  30. void provider_register(struct provider *p);
  31. #endif /* _PLY_H */