#include #include #include int buffered_init(struct buffered *ctx, u16 size) { ctx->data = kmalloc(size); if (NULL == ctx->data) { return 0; } ctx->buffer_size = size; ctx->buffer_usage = 0; return 1; } int buffered_write(struct buffered *ctx, u8 *data, u16 length) { if (length + ctx->buffer_usage > ctx->buffer_size) { return 0; } u8 *data_ptr = ctx->data; data_ptr += ctx->buffer_usage; memcpy(data_ptr, data, length); ctx->buffer_usage += length; return 1; } void buffered_clear(struct buffered *ctx) { ctx->buffer_usage = 0; } void buffered_free(struct buffered *ctx) { kfree(ctx->data); }