Commit Graph

27 Commits

Author SHA1 Message Date
Nekotekina b59f142d4e Move types.h to util/types.hpp 2020-12-12 15:12:01 +03:00
Nekotekina 65eeee0f4c Remove cancerous lf_value<>
Replace thread names (generic, PPU, SPU) with new shared pointers.
Devirtualize cpu_thread::get_name (used in single case).
2020-02-28 18:54:46 +03:00
Nekotekina bf4bdf73b7 Remove unused lf_hashmap
There are better ways to implement this.
2020-02-28 18:54:46 +03:00
Nekotekina 0ee2f761ae Fix warning in lf_fifo<>::push_begin() 2020-02-18 14:59:11 +03:00
Nekotekina c0f80cfe7a Use attributes for LIKELY/UNLIKELY
Remove LIKELY/UNLIKELY macro.
2020-02-05 10:42:34 +03:00
Nekotekina 7fcc49004d lf_fifo: fix UB and fix size()
Simplify internal counter to atomic<u64>.
Make size() return correct difference between push and pop pointers.
2020-01-17 00:24:07 +03:00
Nekotekina 7a32af7a57 Implement lf_bunch<>
Simple concurrent container without erase support.
2019-10-26 21:24:12 +03:00
Nekotekina 0c06456950 Simplify lf_queue<> (second attempt)
It doesn't need reinterpret_cast anymore.
2019-10-26 21:24:12 +03:00
Nekotekina 6867fc5f06 Revert "Simplify lf_queue<>"
This reverts commit 050e5b4aec.
2019-10-23 21:55:31 +03:00
Nekotekina 050e5b4aec Simplify lf_queue<>
It doesn't need reinterpret_cast anymore.
2019-10-23 16:01:14 +03:00
Nekotekina ac712bf4e3 lf_queue: remove explicit notify(), notify in push() instead
Should be cheap enough now if there are no waiters.
2019-10-12 22:45:17 +03:00
Nekotekina 5624b001ae lf_queue: add range-for support (endless loop with waiting) 2019-10-12 22:37:52 +03:00
Nekotekina c9170bbb88 Fix lf_queue::wait
Remove incorrect loop
2019-09-13 23:52:18 +03:00
Nekotekina b91661ae71 Remove timeout support from lf_queue::wait
Add notify method and use atomic wait
2019-09-10 19:25:39 +03:00
Nekotekina 4f22559ff0 Remove dumb overloads of atomic_op, fetch_op
And lf_queue::apply.
Fix inlining problem by passing F by value.
2019-08-14 20:28:34 +03:00
Nekotekina f63e89f9b4 Implement waitable atomics
Moved Atomic.h to util/atomic.hpp
List source files in CMakeLists.txt
2019-07-29 03:04:55 +03:00
Nekotekina dfd50d0185 Implement std::bit_cast<>
Partial implementation of std::bit_cast from C++20.
Also fix most strict-aliasing rule break warnings (gcc).
2019-06-02 23:22:16 +03:00
RipleyTom 980c3d6fe8 Fix lf_queue destructor 2019-03-13 15:59:13 +03:00
Nekotekina 81c50bad69 lf_queue: implement wait() method
Synchronization does not occupy additional space by reusing LSB
2019-01-13 14:45:36 +03:00
Nekotekina ac775cd75e Simplify gui_listener
Use lf_queue
2019-01-13 14:45:36 +03:00
Nekotekina 3fed4dcc5a Remove lf_mpsc, lf_spsc
Not practical
2019-01-13 14:45:36 +03:00
Nekotekina 435f60d503 lf_queue: add iterator support
Allow range-for loop over an object returned by `pop_all()`
2019-01-13 14:45:36 +03:00
Nekotekina a8a8cd88a0 Implement lf_queue<>, lf_value<>
lf_queue<>: unbound FIFO queue with dynamic linked-list
lf_value<>: concurrently-assignable value readable without locking at the cost of memory (using dynamic linked list)

Add atomic_t<>::compare_exchange
2018-09-27 12:16:43 +03:00
Nekotekina 688097faa9 lf_spsc, lf_mpsc added 2017-02-22 12:57:08 +03:00
Nekotekina 0f87c4485d Silly macro removed-2 2016-08-14 18:19:42 +03:00
Nekotekina 438e057dc8 Partial commit: sys_fs 2016-07-17 02:27:52 +03:00
Nekotekina 266db1336d The rest 2016-05-23 16:22:25 +03:00