diff options
Diffstat (limited to 'src/packet.c')
| -rw-r--r-- | src/packet.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/packet.c b/src/packet.c index c5ece05..c778965 100644 --- a/src/packet.c +++ b/src/packet.c @@ -1,5 +1,6 @@ #include <gran/packet.h> #include <stdlib.h> +#include <assert.h> struct packet { enum packet_state state; @@ -13,7 +14,7 @@ struct packet { struct packet *create_packet(enum packet_type type, uintptr_t addr, size_t size) { - struct packet *pkt = calloc(1, sizeof(struct packet) + size); + struct packet *pkt = malloc(sizeof(struct packet) + size); if (!pkt) return NULL; @@ -28,7 +29,7 @@ struct packet *create_packet(enum packet_type type, uintptr_t addr, size_t size) struct packet *create_packet_with(enum packet_type type, uintptr_t addr, size_t size, void *data) { - struct packet *pkt = calloc(1, sizeof(struct packet)); + struct packet *pkt = malloc(sizeof(struct packet)); if (!pkt) return NULL; @@ -40,6 +41,18 @@ struct packet *create_packet_with(enum packet_type type, uintptr_t addr, return pkt; } +struct packet *reuse_packet(struct packet *pkt, enum packet_type type, + uintptr_t addr, size_t size, void *data) +{ + assert(pkt->state == PACKET_DONE); + pkt->state = PACKET_INIT; + pkt->type = type; + pkt->addr = addr; + pkt->size = size; + pkt->data = data; + return pkt; +} + enum packet_type packet_type(struct packet *pkt) { return pkt->type; |
