diff --git a/lib/pls/CMakeLists.txt b/lib/pls/CMakeLists.txt index 67e9cd8..24e0e9a 100644 --- a/lib/pls/CMakeLists.txt +++ b/lib/pls/CMakeLists.txt @@ -35,13 +35,13 @@ add_library(pls STATIC include/pls/internal/base/error_handling.h include/pls/internal/base/alignment.h src/internal/base/alignment.cpp - include/pls/internal/data_structures/aligned_stack.h src/internal/data_structures/aligned_stack.cpp - include/pls/internal/data_structures/aligned_stack_impl.h - include/pls/internal/data_structures/deque.h - include/pls/internal/data_structures/locking_deque.h - include/pls/internal/data_structures/locking_deque_impl.h - include/pls/internal/data_structures/work_stealing_deque.h include/pls/internal/data_structures/work_stealing_deque_impl.h - include/pls/internal/data_structures/stamped_integer.h + include/pls/internal/scheduling/data_structures/aligned_stack.h src/internal/data_structures/aligned_stack.cpp + include/pls/internal/scheduling/data_structures/aligned_stack_impl.h + include/pls/internal/scheduling/data_structures/deque.h + include/pls/internal/scheduling/data_structures/locking_deque.h + include/pls/internal/scheduling/data_structures/locking_deque_impl.h + include/pls/internal/scheduling/data_structures/work_stealing_deque.h include/pls/internal/scheduling/data_structures/work_stealing_deque_impl.h + include/pls/internal/scheduling/data_structures/stamped_integer.h include/pls/internal/helpers/prohibit_new.h include/pls/internal/helpers/profiler.h diff --git a/lib/pls/include/pls/internal/data_structures/aligned_stack.h b/lib/pls/include/pls/internal/scheduling/data_structures/aligned_stack.h similarity index 98% rename from lib/pls/include/pls/internal/data_structures/aligned_stack.h rename to lib/pls/include/pls/internal/scheduling/data_structures/aligned_stack.h index 926ffc5..e3f63fb 100644 --- a/lib/pls/include/pls/internal/data_structures/aligned_stack.h +++ b/lib/pls/include/pls/internal/scheduling/data_structures/aligned_stack.h @@ -10,6 +10,7 @@ namespace pls { namespace internal { +namespace scheduling { namespace data_structures { using base::system_details::pointer_t; @@ -59,6 +60,7 @@ class aligned_stack { } } } +} #include "aligned_stack_impl.h" #endif //PLS_ALIGNED_STACK_H diff --git a/lib/pls/include/pls/internal/data_structures/aligned_stack_impl.h b/lib/pls/include/pls/internal/scheduling/data_structures/aligned_stack_impl.h similarity index 96% rename from lib/pls/include/pls/internal/data_structures/aligned_stack_impl.h rename to lib/pls/include/pls/internal/scheduling/data_structures/aligned_stack_impl.h index cf500c4..f04e9e1 100644 --- a/lib/pls/include/pls/internal/data_structures/aligned_stack_impl.h +++ b/lib/pls/include/pls/internal/scheduling/data_structures/aligned_stack_impl.h @@ -6,6 +6,7 @@ namespace pls { namespace internal { +namespace scheduling { namespace data_structures { template @@ -30,5 +31,6 @@ T aligned_stack::pop() { } } } +} #endif //PLS_ALIGNED_STACK_IMPL_H diff --git a/lib/pls/include/pls/internal/data_structures/deque.h b/lib/pls/include/pls/internal/scheduling/data_structures/deque.h similarity index 92% rename from lib/pls/include/pls/internal/data_structures/deque.h rename to lib/pls/include/pls/internal/scheduling/data_structures/deque.h index 5f90a41..729bbf9 100644 --- a/lib/pls/include/pls/internal/data_structures/deque.h +++ b/lib/pls/include/pls/internal/scheduling/data_structures/deque.h @@ -7,6 +7,7 @@ namespace pls { namespace internal { +namespace scheduling { namespace data_structures { template @@ -15,5 +16,6 @@ using deque = work_stealing_deque; } } } +} #endif //PLS_DEQUE_H_ diff --git a/lib/pls/include/pls/internal/data_structures/locking_deque.h b/lib/pls/include/pls/internal/scheduling/data_structures/locking_deque.h similarity index 96% rename from lib/pls/include/pls/internal/data_structures/locking_deque.h rename to lib/pls/include/pls/internal/scheduling/data_structures/locking_deque.h index 73caa68..3f798f6 100644 --- a/lib/pls/include/pls/internal/data_structures/locking_deque.h +++ b/lib/pls/include/pls/internal/scheduling/data_structures/locking_deque.h @@ -5,10 +5,11 @@ #include #include "pls/internal/base/spin_lock.h" -#include "pls/internal/data_structures/aligned_stack.h" +#include "aligned_stack.h" namespace pls { namespace internal { +namespace scheduling { namespace data_structures { using deque_offset = aligned_stack::stack_offset; @@ -72,6 +73,7 @@ class locking_deque { } } } +} #include "locking_deque_impl.h" #endif //PLS_LOCKING_DEQUE_H diff --git a/lib/pls/include/pls/internal/data_structures/locking_deque_impl.h b/lib/pls/include/pls/internal/scheduling/data_structures/locking_deque_impl.h similarity index 96% rename from lib/pls/include/pls/internal/data_structures/locking_deque_impl.h rename to lib/pls/include/pls/internal/scheduling/data_structures/locking_deque_impl.h index 7657fcf..c683cb9 100644 --- a/lib/pls/include/pls/internal/data_structures/locking_deque_impl.h +++ b/lib/pls/include/pls/internal/scheduling/data_structures/locking_deque_impl.h @@ -4,6 +4,7 @@ namespace pls { namespace internal { +namespace scheduling { namespace data_structures { template @@ -13,7 +14,7 @@ T *locking_deque::push_task(ARGS &&...args) { "Must only push types of onto work_stealing_deque"); // Allocate object - auto deque_item = stack_->push>(std::forward(args)...); + auto deque_item = stack_->push < locking_deque_container < Task, T>>(std::forward(args)...); deque_item->item_ = &deque_item->content_; // Keep for later publishing @@ -101,5 +102,6 @@ deque_offset locking_deque::save_offset() { } } } +} #endif //PLS_LOCKING_DEQUE_IMPL_H_ diff --git a/lib/pls/include/pls/internal/data_structures/stamped_integer.h b/lib/pls/include/pls/internal/scheduling/data_structures/stamped_integer.h similarity index 96% rename from lib/pls/include/pls/internal/data_structures/stamped_integer.h rename to lib/pls/include/pls/internal/scheduling/data_structures/stamped_integer.h index a24bcfa..04fea63 100644 --- a/lib/pls/include/pls/internal/data_structures/stamped_integer.h +++ b/lib/pls/include/pls/internal/scheduling/data_structures/stamped_integer.h @@ -6,6 +6,7 @@ namespace pls { namespace internal { +namespace scheduling { namespace data_structures { constexpr unsigned long HALF_CACHE_LINE = base::system_details::CACHE_LINE_SIZE / 2; @@ -23,5 +24,6 @@ struct stamped_integer { } } } +} #endif //PREDICTABLE_PARALLEL_PATTERNS_LIB_PLS_INCLUDE_PLS_INTERNAL_DATA_STRUCTURES_STAMPED_INTEGER_H_ diff --git a/lib/pls/include/pls/internal/data_structures/work_stealing_deque.h b/lib/pls/include/pls/internal/scheduling/data_structures/work_stealing_deque.h similarity index 96% rename from lib/pls/include/pls/internal/data_structures/work_stealing_deque.h rename to lib/pls/include/pls/internal/scheduling/data_structures/work_stealing_deque.h index 63c109d..2266ad5 100644 --- a/lib/pls/include/pls/internal/data_structures/work_stealing_deque.h +++ b/lib/pls/include/pls/internal/scheduling/data_structures/work_stealing_deque.h @@ -5,12 +5,13 @@ #include #include "pls/internal/base/error_handling.h" -#include "pls/internal/data_structures/stamped_integer.h" +#include "stamped_integer.h" #include "aligned_stack.h" namespace pls { namespace internal { +namespace scheduling { namespace data_structures { using base::system_details::pointer_t; @@ -62,7 +63,7 @@ class work_stealing_deque { std::atomic tail_; deque_offset previous_tail_; - Task* last_pushed_task_; + Task *last_pushed_task_; public: explicit work_stealing_deque(aligned_stack *stack) : stack_{stack}, @@ -92,6 +93,7 @@ class work_stealing_deque { } } } +} #include "work_stealing_deque_impl.h" #endif //PLS_WORK_STEALING_DEQUE_H_ diff --git a/lib/pls/include/pls/internal/data_structures/work_stealing_deque_impl.h b/lib/pls/include/pls/internal/scheduling/data_structures/work_stealing_deque_impl.h similarity index 96% rename from lib/pls/include/pls/internal/data_structures/work_stealing_deque_impl.h rename to lib/pls/include/pls/internal/scheduling/data_structures/work_stealing_deque_impl.h index 415809c..b791bac 100644 --- a/lib/pls/include/pls/internal/data_structures/work_stealing_deque_impl.h +++ b/lib/pls/include/pls/internal/scheduling/data_structures/work_stealing_deque_impl.h @@ -7,6 +7,7 @@ namespace pls { namespace internal { +namespace scheduling { namespace data_structures { template @@ -158,5 +159,6 @@ deque_offset work_stealing_deque::save_offset() { } } } +} #endif //PLS_WORK_STEALING_DEQUE_IMPL_H_