vppinfra: Put clib_perf* behind Linux checks and provide stubs for FreeBSD
As a placeholder stub out clib_perf functions on FreeBSD, the interface for performance counters on FreeBSD is different and will require its own implementation. Type: improvement Change-Id: I61511ebe5ee1fd6fe93d3179c7843c811f47a846 Signed-off-by: Tom Jones <thj@freebsd.org>
This commit is contained in:
@ -68,6 +68,7 @@ extern clib_perfmon_main_t clib_perfmon_main;
|
||||
static_always_inline void
|
||||
clib_perfmon_ioctl (int fd, u32 req)
|
||||
{
|
||||
#ifdef __linux__
|
||||
#ifdef __x86_64__
|
||||
asm volatile("syscall"
|
||||
:
|
||||
@ -76,6 +77,7 @@ clib_perfmon_ioctl (int fd, u32 req)
|
||||
#else
|
||||
ioctl (fd, req, PERF_IOC_FLAG_GROUP);
|
||||
#endif
|
||||
#endif /* linux */
|
||||
}
|
||||
|
||||
clib_error_t *clib_perfmon_init_by_bundle_name (clib_perfmon_ctx_t *ctx,
|
||||
@ -87,6 +89,7 @@ u64 *clib_perfmon_capture (clib_perfmon_ctx_t *ctx, u32 n_ops, char *fmt, ...);
|
||||
void clib_perfmon_capture_group (clib_perfmon_ctx_t *ctx, char *fmt, ...);
|
||||
format_function_t format_perfmon_bundle;
|
||||
|
||||
#ifdef __linux__
|
||||
static_always_inline void
|
||||
clib_perfmon_reset (clib_perfmon_ctx_t *ctx)
|
||||
{
|
||||
@ -102,6 +105,23 @@ clib_perfmon_disable (clib_perfmon_ctx_t *ctx)
|
||||
{
|
||||
clib_perfmon_ioctl (ctx->group_fd, PERF_EVENT_IOC_DISABLE);
|
||||
}
|
||||
#elif __FreeBSD__
|
||||
static_always_inline void
|
||||
clib_perfmon_reset (clib_perfmon_ctx_t *ctx)
|
||||
{
|
||||
/* TODO: Implement for FreeBSD */
|
||||
}
|
||||
static_always_inline void
|
||||
clib_perfmon_enable (clib_perfmon_ctx_t *ctx)
|
||||
{
|
||||
/* TODO: Implement for FreeBSD */
|
||||
}
|
||||
static_always_inline void
|
||||
clib_perfmon_disable (clib_perfmon_ctx_t *ctx)
|
||||
{
|
||||
/* TODO: Implement for FreeBSD */
|
||||
}
|
||||
#endif /* linux */
|
||||
|
||||
#define CLIB_PERFMON_BUNDLE(x) \
|
||||
static clib_perfmon_bundle_reg_t clib_perfmon_bundle_reg_##x; \
|
||||
|
@ -84,6 +84,7 @@ extern test_main_t test_main;
|
||||
__VA_ARGS__, {} \
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
static_always_inline void
|
||||
test_perf_event_reset (test_perf_t *t)
|
||||
{
|
||||
@ -99,6 +100,23 @@ test_perf_event_disable (test_perf_t *t)
|
||||
{
|
||||
clib_perfmon_ioctl (t->fd, PERF_EVENT_IOC_DISABLE);
|
||||
}
|
||||
#elif __FreeBSD__
|
||||
static_always_inline void
|
||||
test_perf_event_reset (test_perf_t *t)
|
||||
{
|
||||
/* TODO: Implement for FreeBSD */
|
||||
}
|
||||
static_always_inline void
|
||||
test_perf_event_enable (test_perf_t *t)
|
||||
{
|
||||
/* TODO: Implement for FreeBSD */
|
||||
}
|
||||
static_always_inline void
|
||||
test_perf_event_disable (test_perf_t *t)
|
||||
{
|
||||
/* TODO: Implement for FreeBSD */
|
||||
}
|
||||
#endif
|
||||
|
||||
void *test_mem_alloc (uword size);
|
||||
void *test_mem_alloc_and_fill_inc_u8 (uword size, u8 start, u8 mask);
|
||||
|
Reference in New Issue
Block a user