Remove needless mutex locks and unlocks
This commit is contained in:
19
baked.c
19
baked.c
@ -13,16 +13,6 @@ INCBIN(bundle_zip, "./bundle.zip");
|
|||||||
|
|
||||||
static locked(Baked_Resource *) baked_resources = locked_init(nil);
|
static locked(Baked_Resource *) baked_resources = locked_init(nil);
|
||||||
|
|
||||||
void lock_baked_resources(void)
|
|
||||||
{
|
|
||||||
lockx(&baked_resources);
|
|
||||||
}
|
|
||||||
|
|
||||||
void unlock_baked_resources(void)
|
|
||||||
{
|
|
||||||
unlockx(&baked_resources);
|
|
||||||
}
|
|
||||||
|
|
||||||
void add_baked_resource(char *key, const uchar *data, size_t size)
|
void add_baked_resource(char *key, const uchar *data, size_t size)
|
||||||
{
|
{
|
||||||
int fd = memfd_create(key, 0);
|
int fd = memfd_create(key, 0);
|
||||||
@ -36,8 +26,6 @@ void add_baked_resource(char *key, const uchar *data, size_t size)
|
|||||||
|
|
||||||
void init_baked_resources(void)
|
void init_baked_resources(void)
|
||||||
{
|
{
|
||||||
lockx(&baked_resources);
|
|
||||||
|
|
||||||
struct zip_t *zip = zip_stream_open(bundle_zip_data, bundle_zip_size, BUNDLE_ZIP_COMPRESSION, 'r');
|
struct zip_t *zip = zip_stream_open(bundle_zip_data, bundle_zip_size, BUNDLE_ZIP_COMPRESSION, 'r');
|
||||||
size_t n = zip_entries_total(zip);
|
size_t n = zip_entries_total(zip);
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (size_t i = 0; i < n; i++) {
|
||||||
@ -53,29 +41,28 @@ void init_baked_resources(void)
|
|||||||
zip_entry_close(zip);
|
zip_entry_close(zip);
|
||||||
}
|
}
|
||||||
zip_stream_close(zip);
|
zip_stream_close(zip);
|
||||||
|
|
||||||
unlockx(&baked_resources);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_baked_resources(void)
|
void free_baked_resources(void)
|
||||||
{
|
{
|
||||||
lockx(&baked_resources);
|
|
||||||
for (size_t i = 0; i < shlen(baked_resources.value); i++) {
|
for (size_t i = 0; i < shlen(baked_resources.value); i++) {
|
||||||
close(baked_resources.value[i].value.memfd);
|
close(baked_resources.value[i].value.memfd);
|
||||||
free(baked_resources.value[i].key);
|
free(baked_resources.value[i].key);
|
||||||
free(baked_resources.value[i].value.bufptr);
|
free(baked_resources.value[i].value.bufptr);
|
||||||
}
|
}
|
||||||
shfree(baked_resources.value);
|
shfree(baked_resources.value);
|
||||||
unlockx(&baked_resources);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool get_baked_resource_path(char *key, char *buf, size_t size)
|
bool get_baked_resource_path(char *key, char *buf, size_t size)
|
||||||
{
|
{
|
||||||
|
lockx(&baked_resources);
|
||||||
if (shgeti(baked_resources.value, key) != -1) {
|
if (shgeti(baked_resources.value, key) != -1) {
|
||||||
Baked_Resource_Value brv = shget(baked_resources.value, key);
|
Baked_Resource_Value brv = shget(baked_resources.value, key);
|
||||||
snprintf(buf, size, "/proc/%d/fd/%d", getpid(), brv.memfd);
|
snprintf(buf, size, "/proc/%d/fd/%d", getpid(), brv.memfd);
|
||||||
|
unlockx(&baked_resources);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
unlockx(&baked_resources);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
baked.h
2
baked.h
@ -15,7 +15,5 @@ void init_baked_resources(void);
|
|||||||
void free_baked_resources(void);
|
void free_baked_resources(void);
|
||||||
bool get_baked_resource_path(char *key, char *buf, size_t size);
|
bool get_baked_resource_path(char *key, char *buf, size_t size);
|
||||||
void baked_resource_each(void (*f)(Baked_Resource *resource, void *udata), void *udata);
|
void baked_resource_each(void (*f)(Baked_Resource *resource, void *udata), void *udata);
|
||||||
void lock_baked_resources(void);
|
|
||||||
void unlock_baked_resources(void);
|
|
||||||
|
|
||||||
#endif // BAKED_H_
|
#endif // BAKED_H_
|
||||||
|
10
main.c
10
main.c
@ -157,7 +157,6 @@ void route_hashtable_put_blogs(Baked_Resource *resource, void *udata)
|
|||||||
|
|
||||||
void init_route_hashtable(void)
|
void init_route_hashtable(void)
|
||||||
{
|
{
|
||||||
lockx(&route_hashtable);
|
|
||||||
shdefault(route_hashtable.value, &route_page_not_found);
|
shdefault(route_hashtable.value, &route_page_not_found);
|
||||||
shput(route_hashtable.value, clonestr_alloc(&default_allocator, "/"), &route_home);
|
shput(route_hashtable.value, clonestr_alloc(&default_allocator, "/"), &route_home);
|
||||||
shput(route_hashtable.value, clonestr_alloc(&default_allocator, "/page-missing"), &route_page_not_found);
|
shput(route_hashtable.value, clonestr_alloc(&default_allocator, "/page-missing"), &route_page_not_found);
|
||||||
@ -167,17 +166,14 @@ void init_route_hashtable(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
baked_resource_each(&route_hashtable_put_blogs, nil);
|
baked_resource_each(&route_hashtable_put_blogs, nil);
|
||||||
unlockx(&route_hashtable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void free_route_hashtable(void)
|
void free_route_hashtable(void)
|
||||||
{
|
{
|
||||||
lockx(&route_hashtable);
|
|
||||||
for (size_t i = 0; i < shlen(route_hashtable.value); i++) {
|
for (size_t i = 0; i < shlen(route_hashtable.value); i++) {
|
||||||
free(route_hashtable.value[i].key);
|
free(route_hashtable.value[i].key);
|
||||||
}
|
}
|
||||||
shfree(route_hashtable.value);
|
shfree(route_hashtable.value);
|
||||||
unlockx(&route_hashtable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *init_baked_dump(void)
|
char *init_baked_dump(void)
|
||||||
@ -261,9 +257,7 @@ void copy_baked_resources_to_baked_dump(Baked_Resource *resource, void *udata)
|
|||||||
|
|
||||||
void populate_baked_dump(char *baked_dump)
|
void populate_baked_dump(char *baked_dump)
|
||||||
{
|
{
|
||||||
lock_baked_resources();
|
|
||||||
baked_resource_each(©_baked_resources_to_baked_dump, baked_dump);
|
baked_resource_each(©_baked_resources_to_baked_dump, baked_dump);
|
||||||
unlock_baked_resources();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
volatile sig_atomic_t alive = true;
|
volatile sig_atomic_t alive = true;
|
||||||
@ -281,12 +275,10 @@ int main(int argc, char ** argv)
|
|||||||
start_timer();
|
start_timer();
|
||||||
|
|
||||||
init_baked_resources();
|
init_baked_resources();
|
||||||
lockx(&baked_dump_path);
|
|
||||||
if ((baked_dump_path.value = init_baked_dump()) == nil) {
|
if ((baked_dump_path.value = init_baked_dump()) == nil) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
populate_baked_dump(baked_dump_path.value);
|
populate_baked_dump(baked_dump_path.value);
|
||||||
unlockx(&baked_dump_path);
|
|
||||||
|
|
||||||
mg_log_set(MG_LL_DEBUG);
|
mg_log_set(MG_LL_DEBUG);
|
||||||
struct mg_mgr mgr;
|
struct mg_mgr mgr;
|
||||||
@ -304,9 +296,7 @@ int main(int argc, char ** argv)
|
|||||||
|
|
||||||
mg_mgr_free(&mgr);
|
mg_mgr_free(&mgr);
|
||||||
|
|
||||||
lockx(&baked_dump_path);
|
|
||||||
free_baked_dump(baked_dump_path.value);
|
free_baked_dump(baked_dump_path.value);
|
||||||
unlockx(&baked_dump_path);
|
|
||||||
free_baked_resources();
|
free_baked_resources();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
8
routes.c
8
routes.c
@ -95,8 +95,6 @@ void route_build_id(Allocator *alloc, struct mg_http_message *msg, Route_Result
|
|||||||
|
|
||||||
void route_page_not_found(Allocator *alloc, struct mg_http_message *msg, Route_Result *result, void *context_data)
|
void route_page_not_found(Allocator *alloc, struct mg_http_message *msg, Route_Result *result, void *context_data)
|
||||||
{
|
{
|
||||||
lock_baked_resources();
|
|
||||||
defer { unlock_baked_resources(); }
|
|
||||||
NString_List env = {0};
|
NString_List env = {0};
|
||||||
|
|
||||||
list_append_alloc(alloc, &env, clonestr_alloc(alloc, fmt("-DURL=%.*s", msg->uri.len, msg->uri.buf)));
|
list_append_alloc(alloc, &env, clonestr_alloc(alloc, fmt("-DURL=%.*s", msg->uri.len, msg->uri.buf)));
|
||||||
@ -132,8 +130,6 @@ void route_page_not_found(Allocator *alloc, struct mg_http_message *msg, Route_R
|
|||||||
|
|
||||||
void route_home(Allocator *alloc, struct mg_http_message *msg, Route_Result *result, void *context_data)
|
void route_home(Allocator *alloc, struct mg_http_message *msg, Route_Result *result, void *context_data)
|
||||||
{
|
{
|
||||||
lock_baked_resources();
|
|
||||||
defer { unlock_baked_resources(); }
|
|
||||||
NString_List env = {0};
|
NString_List env = {0};
|
||||||
|
|
||||||
String_Builder out = {0};
|
String_Builder out = {0};
|
||||||
@ -167,8 +163,6 @@ void route_home(Allocator *alloc, struct mg_http_message *msg, Route_Result *res
|
|||||||
|
|
||||||
void route_generic_blog(Allocator *alloc, struct mg_http_message *msg, Route_Result *result, void *context_data)
|
void route_generic_blog(Allocator *alloc, struct mg_http_message *msg, Route_Result *result, void *context_data)
|
||||||
{
|
{
|
||||||
lock_baked_resources();
|
|
||||||
defer { unlock_baked_resources(); }
|
|
||||||
NString_List env = {0};
|
NString_List env = {0};
|
||||||
|
|
||||||
String_Builder out = {0};
|
String_Builder out = {0};
|
||||||
@ -253,8 +247,6 @@ void collect_blogs(Baked_Resource *resource, void *udata)
|
|||||||
|
|
||||||
void route_blog(Allocator *alloc, struct mg_http_message *msg, Route_Result *result, void *context_data)
|
void route_blog(Allocator *alloc, struct mg_http_message *msg, Route_Result *result, void *context_data)
|
||||||
{
|
{
|
||||||
lock_baked_resources();
|
|
||||||
defer { unlock_baked_resources(); }
|
|
||||||
NString_List env = {0};
|
NString_List env = {0};
|
||||||
|
|
||||||
String_Builder out = {0};
|
String_Builder out = {0};
|
||||||
|
Reference in New Issue
Block a user