From 6b80817a98d7f47ecceedce98ea502a32c7cb3de Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Thu, 5 Jun 2025 21:18:47 +0800 Subject: [PATCH] fix all --- 3rd/libhv/include/libhv_bindings.hpp | 2 ++ 3rd/libhv/src/WebSocketClient.cpp | 3 --- src/common/name.c | 8 ++++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/3rd/libhv/include/libhv_bindings.hpp b/3rd/libhv/include/libhv_bindings.hpp index 42a09e38..b9c459a5 100644 --- a/3rd/libhv/include/libhv_bindings.hpp +++ b/3rd/libhv/include/libhv_bindings.hpp @@ -4,6 +4,8 @@ #include "http/HttpMessage.h" #include "base/hplatform.h" +#include "pocketpy/common/name.h" + extern "C" void pk__add_module_libhv(); void libhv_HttpRequest_create(py_OutRef out, HttpRequestPtr ptr); diff --git a/3rd/libhv/src/WebSocketClient.cpp b/3rd/libhv/src/WebSocketClient.cpp index 45d0c0b7..303bd025 100644 --- a/3rd/libhv/src/WebSocketClient.cpp +++ b/3rd/libhv/src/WebSocketClient.cpp @@ -3,9 +3,6 @@ #include "pocketpy/pocketpy.h" #include "http/client/WebSocketClient.h" -extern py_Name __new__; -extern py_Name __init__; - struct libhv_WebSocketClient { hv::WebSocketClient ws; diff --git a/src/common/name.c b/src/common/name.c index be1f3e69..03e95fe1 100644 --- a/src/common/name.c +++ b/src/common/name.c @@ -14,7 +14,7 @@ typedef struct NameBucket { static struct { NameBucket* table[0x10000]; - atomic_bool lock; + atomic_flag lock; } pk_string_table; #define MAGIC_METHOD(x) py_Name x; @@ -40,7 +40,7 @@ void pk_names_finalize() { } py_Name py_namev(c11_sv name) { - while(atomic_exchange(&pk_string_table.lock, true)) { + while(atomic_flag_test_and_set(&pk_string_table.lock)) { // busy-wait until the lock is released } uint64_t hash = c11_sv__hash(name); @@ -58,7 +58,7 @@ py_Name py_namev(c11_sv name) { p = p->next; } if(found) { - atomic_store(&pk_string_table.lock, false); + atomic_flag_clear(&pk_string_table.lock); return (py_Name)p; } @@ -75,7 +75,7 @@ py_Name py_namev(c11_sv name) { assert(prev->next == NULL); prev->next = bucket; } - atomic_store(&pk_string_table.lock, false); + atomic_flag_clear(&pk_string_table.lock); return (py_Name)bucket; }