mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-06-01 02:55:07 +08:00
sd_bench and logger use aligned buffers
This commit is contained in:
committed by
Lorenz Meier
parent
45d0603627
commit
ccee36bb68
@@ -83,6 +83,9 @@ typedef pollevent_t px4_pollevent_t;
|
|||||||
|
|
||||||
#define PX4_STACK_OVERHEAD (1024 * 24)
|
#define PX4_STACK_OVERHEAD (1024 * 24)
|
||||||
|
|
||||||
|
#define px4_cache_aligned_data()
|
||||||
|
#define px4_cache_aligned_alloc malloc
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
typedef short px4_pollevent_t;
|
typedef short px4_pollevent_t;
|
||||||
|
|||||||
@@ -40,3 +40,6 @@
|
|||||||
|
|
||||||
#define px4_udelay(usec) px4_usleep(usec)
|
#define px4_udelay(usec) px4_usleep(usec)
|
||||||
#define px4_mdelay(msec) px4_msleep(msec)
|
#define px4_mdelay(msec) px4_msleep(msec)
|
||||||
|
|
||||||
|
#define px4_cache_aligned_data()
|
||||||
|
#define px4_cache_aligned_alloc malloc
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ bool LogWriterFile::LogFileBuffer::start_log(const char *filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (_buffer == nullptr) {
|
if (_buffer == nullptr) {
|
||||||
_buffer = new uint8_t[_buffer_size];
|
_buffer = (uint8_t *) px4_cache_aligned_alloc(_buffer_size);
|
||||||
|
|
||||||
if (_buffer == nullptr) {
|
if (_buffer == nullptr) {
|
||||||
PX4_ERR("Can't create log buffer");
|
PX4_ERR("Can't create log buffer");
|
||||||
|
|||||||
@@ -79,8 +79,10 @@ usage()
|
|||||||
PRINT_MODULE_USAGE_PARAM_INT('r', 5, 1, 1000, "Number of runs", true);
|
PRINT_MODULE_USAGE_PARAM_INT('r', 5, 1, 1000, "Number of runs", true);
|
||||||
PRINT_MODULE_USAGE_PARAM_INT('d', 2000, 1, 100000, "Duration of a run in ms", true);
|
PRINT_MODULE_USAGE_PARAM_INT('d', 2000, 1, 100000, "Duration of a run in ms", true);
|
||||||
PRINT_MODULE_USAGE_PARAM_FLAG('s', "Call fsync after each block (default=at end of each run)", true);
|
PRINT_MODULE_USAGE_PARAM_FLAG('s', "Call fsync after each block (default=at end of each run)", true);
|
||||||
|
PRINT_MODULE_USAGE_PARAM_FLAG('u', "Test performance with unaligned data)", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
sd_bench_main(int argc, char *argv[])
|
sd_bench_main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@@ -91,8 +93,10 @@ sd_bench_main(int argc, char *argv[])
|
|||||||
synchronized = false;
|
synchronized = false;
|
||||||
num_runs = 5;
|
num_runs = 5;
|
||||||
run_duration = 2000;
|
run_duration = 2000;
|
||||||
|
bool aligned = true;
|
||||||
|
uint8_t *block = NULL;
|
||||||
|
|
||||||
while ((ch = px4_getopt(argc, argv, "b:r:d:s", &myoptind, &myoptarg)) != EOF) {
|
while ((ch = px4_getopt(argc, argv, "b:r:d:su", &myoptind, &myoptarg)) != EOF) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 'b':
|
case 'b':
|
||||||
block_size = strtol(myoptarg, NULL, 0);
|
block_size = strtol(myoptarg, NULL, 0);
|
||||||
@@ -110,6 +114,10 @@ sd_bench_main(int argc, char *argv[])
|
|||||||
synchronized = true;
|
synchronized = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'u':
|
||||||
|
aligned = false;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
return -1;
|
return -1;
|
||||||
@@ -130,7 +138,12 @@ sd_bench_main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
//create some data block
|
//create some data block
|
||||||
uint8_t *block = (uint8_t *)malloc(block_size);
|
if (aligned) {
|
||||||
|
block = (uint8_t *)px4_cache_aligned_alloc(block_size);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
block = (uint8_t *)malloc(block_size);
|
||||||
|
}
|
||||||
|
|
||||||
if (!block) {
|
if (!block) {
|
||||||
PX4_ERR("Failed to allocate memory block");
|
PX4_ERR("Failed to allocate memory block");
|
||||||
|
|||||||
Reference in New Issue
Block a user