Skip to content

Commit

Permalink
feat concurrent: up librseq
Browse files Browse the repository at this point in the history
commit_hash:b19ebf58741f1e935cfd73a879bed9c90fb3b6ae
  • Loading branch information
Anton3 committed Oct 16, 2024
1 parent c9b7274 commit d45d624
Show file tree
Hide file tree
Showing 46 changed files with 8,079 additions and 735 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
/build*/
/cmake-build-*/
/docs/
/third_party/
CMakeLists.txt.user
compile_commands.json
tags
Expand Down
40 changes: 33 additions & 7 deletions .mapping.json
Original file line number Diff line number Diff line change
Expand Up @@ -3522,17 +3522,43 @@
"third_party/librseq/CMakeLists.txt":"taxi/uservices/userver/third_party/librseq/CMakeLists.txt",
"third_party/librseq/LICENSE.md":"taxi/uservices/userver/third_party/librseq/LICENSE.md",
"third_party/librseq/README.md":"taxi/uservices/userver/third_party/librseq/README.md",
"third_party/librseq/include/rseq/abi.h":"taxi/uservices/userver/third_party/librseq/include/rseq/abi.h",
"third_party/librseq/include/rseq/arch.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch.h",
"third_party/librseq/include/rseq/arch/aarch64.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/aarch64.h",
"third_party/librseq/include/rseq/arch/aarch64/bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/aarch64/bits.h",
"third_party/librseq/include/rseq/arch/arm.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/arm.h",
"third_party/librseq/include/rseq/arch/arm/bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/arm/bits.h",
"third_party/librseq/include/rseq/arch/generic/common.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/generic/common.h",
"third_party/librseq/include/rseq/arch/generic/thread-pointer.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/generic/thread-pointer.h",
"third_party/librseq/include/rseq/arch/mips.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/mips.h",
"third_party/librseq/include/rseq/arch/mips/bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/mips/bits.h",
"third_party/librseq/include/rseq/arch/ppc.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/ppc.h",
"third_party/librseq/include/rseq/arch/ppc/bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/ppc/bits.h",
"third_party/librseq/include/rseq/arch/ppc/thread-pointer.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/ppc/thread-pointer.h",
"third_party/librseq/include/rseq/arch/riscv.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/riscv.h",
"third_party/librseq/include/rseq/arch/riscv/bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/riscv/bits.h",
"third_party/librseq/include/rseq/arch/riscv/thread-pointer.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/riscv/thread-pointer.h",
"third_party/librseq/include/rseq/arch/s390.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/s390.h",
"third_party/librseq/include/rseq/arch/s390/bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/s390/bits.h",
"third_party/librseq/include/rseq/arch/templates/bits-reset.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/templates/bits-reset.h",
"third_party/librseq/include/rseq/arch/templates/bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/templates/bits.h",
"third_party/librseq/include/rseq/arch/x86.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/x86.h",
"third_party/librseq/include/rseq/arch/x86/bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/x86/bits.h",
"third_party/librseq/include/rseq/arch/x86/thread-pointer.h":"taxi/uservices/userver/third_party/librseq/include/rseq/arch/x86/thread-pointer.h",
"third_party/librseq/include/rseq/compiler.h":"taxi/uservices/userver/third_party/librseq/include/rseq/compiler.h",
"third_party/librseq/include/rseq/rseq-abi.h":"taxi/uservices/userver/third_party/librseq/include/rseq/rseq-abi.h",
"third_party/librseq/include/rseq/rseq-bits-reset.h":"taxi/uservices/userver/third_party/librseq/include/rseq/rseq-bits-reset.h",
"third_party/librseq/include/rseq/rseq-bits-template.h":"taxi/uservices/userver/third_party/librseq/include/rseq/rseq-bits-template.h",
"third_party/librseq/include/rseq/rseq-thread-pointer.h":"taxi/uservices/userver/third_party/librseq/include/rseq/rseq-thread-pointer.h",
"third_party/librseq/include/rseq/rseq-x86-bits.h":"taxi/uservices/userver/third_party/librseq/include/rseq/rseq-x86-bits.h",
"third_party/librseq/include/rseq/rseq-x86-thread-pointer.h":"taxi/uservices/userver/third_party/librseq/include/rseq/rseq-x86-thread-pointer.h",
"third_party/librseq/include/rseq/rseq-x86.h":"taxi/uservices/userver/third_party/librseq/include/rseq/rseq-x86.h",
"third_party/librseq/include/rseq/inject.h":"taxi/uservices/userver/third_party/librseq/include/rseq/inject.h",
"third_party/librseq/include/rseq/mempool.h":"taxi/uservices/userver/third_party/librseq/include/rseq/mempool.h",
"third_party/librseq/include/rseq/pseudocode.h":"taxi/uservices/userver/third_party/librseq/include/rseq/pseudocode.h",
"third_party/librseq/include/rseq/rseq.h":"taxi/uservices/userver/third_party/librseq/include/rseq/rseq.h",
"third_party/librseq/include/rseq/thread-pointer.h":"taxi/uservices/userver/third_party/librseq/include/rseq/thread-pointer.h",
"third_party/librseq/include/rseq/utils.h":"taxi/uservices/userver/third_party/librseq/include/rseq/utils.h",
"third_party/librseq/src/config.h":"taxi/uservices/userver/third_party/librseq/src/config.h",
"third_party/librseq/src/list.h":"taxi/uservices/userver/third_party/librseq/src/list.h",
"third_party/librseq/src/rseq-mempool.c":"taxi/uservices/userver/third_party/librseq/src/rseq-mempool.c",
"third_party/librseq/src/rseq-utils.h":"taxi/uservices/userver/third_party/librseq/src/rseq-utils.h",
"third_party/librseq/src/rseq.c":"taxi/uservices/userver/third_party/librseq/src/rseq.c",
"third_party/librseq/src/smp.c":"taxi/uservices/userver/third_party/librseq/src/smp.c",
"third_party/librseq/src/smp.h":"taxi/uservices/userver/third_party/librseq/src/smp.h",
"third_party/llhttp/CMakeLists.txt":"taxi/uservices/userver/third_party/llhttp/CMakeLists.txt",
"third_party/llhttp/LICENSE-MIT":"taxi/uservices/userver/third_party/llhttp/LICENSE-MIT",
"third_party/llhttp/README.md":"taxi/uservices/userver/third_party/llhttp/README.md",
Expand Down
8 changes: 0 additions & 8 deletions core/src/concurrent/striped_counter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,6 @@
#include <concurrent/impl/rseq.hpp>
#include <concurrent/impl/striped_array.hpp>

// rseq_addv was renamed into rseq_load_add_store__ptr, provide compatibility
// with the older versions
#if defined(__has_include)
#if __has_include(<rseq/rseq-x86.h>)
#define rseq_load_add_store__ptr rseq_addv
#endif
#endif

USERVER_NAMESPACE_BEGIN

namespace concurrent {
Expand Down
11 changes: 8 additions & 3 deletions third_party/librseq/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
project(userver-librseq)
project(userver-librseq C)

SET(SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/rseq.c
${CMAKE_CURRENT_SOURCE_DIR}/src/config.h)
src/rseq.c
src/rseq-mempool.c
src/smp.c
)

add_library(${PROJECT_NAME} OBJECT ${SOURCES})

target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)
target_compile_options(${PROJECT_NAME} PRIVATE -Wno-implicit-function-declaration)
target_compile_definitions(${PROJECT_NAME} PRIVATE _GNU_SOURCE)
set_target_properties(${PROJECT_NAME} PROPERTIES C_EXTENSIONS ON)
_userver_install_targets(COMPONENT core TARGETS ${PROJECT_NAME})
4 changes: 3 additions & 1 deletion third_party/librseq/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
These headers are imported from https://github.com/compudj/librseq

Commit: https://github.com/compudj/librseq/commit/40797ae3069ce08b83c4221839b53e754105be78
Commit: https://github.com/compudj/librseq/commit/1f62f2c757d10d55af2b9519a97f81ac1e5cb178

All platform libraries, except for x86, are stripped.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
#define _RSEQ_ABI_H

/*
* rseq/rseq-abi.h
* rseq/abi.h
*
* Restartable sequences system call API
* Restartable sequences system call ABI
*/

#include <linux/types.h>
Expand Down
94 changes: 94 additions & 0 deletions third_party/librseq/include/rseq/arch.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/* SPDX-License-Identifier: MIT */
/* SPDX-FileCopyrightText: 2016-2022 Mathieu Desnoyers <[email protected]> */

/*
* rseq/arch.h
*/

#include <rseq/thread-pointer.h>

/*
* Architecture detection using compiler defines.
*
* The following defines are used internally for architecture specific code.
*
* URCU_ARCH_X86 : All x86 variants 32 and 64 bits
* URCU_ARCH_I386 : Specific to the i386
* URCU_ARCH_AMD64 : All 64 bits x86 variants
*
* URCU_ARCH_PPC : All PowerPC variants 32 and 64 bits
* URCU_ARCH_PPC64 : Specific to 64 bits variants
*
* URCU_ARCH_S390 : All IBM s390 / s390x variants
* URCU_ARCH_S390X : Specific to z/Architecture 64 bits
*
* URCU_ARCH_ARM : All ARM 32 bits variants
* URCU_ARCH_AARCH64 : All ARM 64 bits variants
* URCU_ARCH_MIPS : All MIPS variants
* URCU_ARCH_RISCV : All RISC-V variants
*/

#ifndef _RSEQ_ARCH_H
#define _RSEQ_ARCH_H

#if (defined(__amd64__) \
|| defined(__amd64) \
|| defined(__x86_64__) \
|| defined(__x86_64))

#define RSEQ_ARCH_X86 1
#define RSEQ_ARCH_AMD64 1
#include <rseq/arch/x86.h>

#elif (defined(__i386__) || defined(__i386))

#define RSEQ_ARCH_X86 1
#include <rseq/arch/x86.h>

#elif (defined(__arm__) || defined(__arm))

#define RSEQ_ARCH_ARM 1
#include <rseq/arch/arm.h>

#elif defined(__aarch64__)

#define RSEQ_ARCH_AARCH64 1
#include <rseq/arch/aarch64.h>

#elif (defined(__powerpc64__) || defined(__ppc64__))

#define RSEQ_ARCH_PPC 1
#define RSEQ_ARCH_PPC64 1
#include <rseq/arch/ppc.h>

#elif (defined(__powerpc__) \
|| defined(__powerpc) \
|| defined(__ppc__))

#define RSEQ_ARCH_PPC 1
#include <rseq/arch/ppc.h>

#elif (defined(__mips__) || defined(__mips))

#define RSEQ_ARCH_MIPS 1
#include <rseq/arch/mips.h>

#elif defined(__s390__)

# if (defined(__s390x__) || defined(__zarch__))
# define RSEQ_ARCH_S390X 1
# endif

#define RSEQ_ARCH_S390 1
#include <rseq/arch/s390.h>

#elif defined(__riscv)

#define RSEQ_ARCH_RISCV 1
#include <rseq/arch/riscv.h>

#else
#error "Cannot build: unrecognized architecture, see <rseq/arch.h>."
#endif

#endif /* _RSEQ_ARCH_H */
Loading

0 comments on commit d45d624

Please sign in to comment.