/
githubmirror
/
liburing
Обзор
Документация
Войти
/
githubmirror
/
liburing
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
liburing-2.2
src/lib.h
57 строк
1 KB
Ammar Faizi
lib.h: Split off lib header for arch specific and generic
11 фев 2022, 19:36
11 фев 2022, 19:36
c099b83
Код
Авторство
О чём код?
/* SPDX-License-Identifier: MIT */ #ifndef LIBURING_LIB_H #define LIBURING_LIB_H #include <stdlib.h> #include <string.h> #include <unistd.h> #define __INTERNAL__LIBURING_LIB_H #if defined(__x86_64__) || defined(__i386__) #include "arch/x86/lib.h" #else /* * We don't have nolibc support for this arch. Must use libc! */ #ifdef CONFIG_NOLIBC #error "This arch doesn't support building liburing without libc" #endif /* libc wrappers. */ #include "arch/generic/lib.h" #endif #undef __INTERNAL__LIBURING_LIB_H #ifndef offsetof #define offsetof(TYPE, FIELD) ((size_t) &((TYPE *)0)->FIELD) #endif #ifndef container_of #define container_of(PTR, TYPE, FIELD) ({ \ __typeof__(((TYPE *)0)->FIELD) *__FIELD_PTR = (PTR); \ (TYPE *)((char *) __FIELD_PTR - offsetof(TYPE, FIELD)); \ }) #endif void *__uring_malloc(size_t len); void __uring_free(void *p); static inline void *uring_malloc(size_t len) { #ifdef CONFIG_NOLIBC return __uring_malloc(len); #else return malloc(len); #endif } static inline void uring_free(void *ptr) { #ifdef CONFIG_NOLIBC __uring_free(ptr); #else free(ptr); #endif } #endif /* #ifndef LIBURING_LIB_H */