buffer: move allocation function into separate compilation unit

This commit is contained in:
Matthias Schiffer 2020-06-16 00:46:55 +02:00
parent 5ab8c7c154
commit 32e861ef68
Signed by: neocturne
GPG key ID: 16EF3F64CB201D9C
3 changed files with 34 additions and 14 deletions

31
src/buffer.c Normal file
View file

@ -0,0 +1,31 @@
// SPDX-License-Identifier: BSD-2-Clause
/*
Copyright (c) 2012-2016, Matthias Schiffer <mschiffer@universe-factory.net>
All rights reserved.
*/
/**
\file
Buffer management
*/
#include "alloc.h"
#include "buffer.h"
/**
Allocate a new buffer
A buffer can have head and tail space which allows changing with data size without moving the data.
The buffer is always allocated aligned to 16 bytes to allow efficient access for SIMD instructions
etc. in crypto implementations
*/
fastd_buffer_t fastd_buffer_alloc(const size_t len, size_t head_space, size_t tail_space) {
size_t base_len = alignto(head_space + len + tail_space, sizeof(fastd_block128_t));
void *ptr = fastd_alloc_aligned(base_len, sizeof(fastd_block128_t));
return (fastd_buffer_t){ .base = ptr, .base_len = base_len, .data = ptr + head_space, .len = len };
}

View file

@ -13,7 +13,7 @@
#pragma once
#include "alloc.h"
#include "log.h"
#include "util.h"
@ -27,20 +27,8 @@ struct fastd_buffer {
};
/**
Allocate a new buffer
fastd_buffer_t fastd_buffer_alloc(const size_t len, size_t head_space, size_t tail_space);
A buffer can have head and tail space which allows changing with data size without moving the data.
The buffer is always allocated aligned to 16 bytes to allow efficient access for SIMD instructions
etc. in crypto implementations
*/
static inline fastd_buffer_t fastd_buffer_alloc(const size_t len, size_t head_space, size_t tail_space) {
size_t base_len = alignto(head_space + len + tail_space, sizeof(fastd_block128_t));
void *ptr = fastd_alloc_aligned(base_len, sizeof(fastd_block128_t));
return (fastd_buffer_t){ .base = ptr, .base_len = base_len, .data = ptr + head_space, .len = len };
}
/** Duplicates a buffer */
static inline fastd_buffer_t fastd_buffer_dup(const fastd_buffer_t buffer, size_t head_space, size_t tail_space) {

View file

@ -35,6 +35,7 @@ src = [
version_h,
'android.c',
'async.c',
'buffer.c',
'capabilities.c',
'config.c',
'fastd.c',