Skip to content
Snippets Groups Projects
Commit 18b90467 authored by Georgy Moshkin's avatar Georgy Moshkin :speech_balloon: Committed by Maksim Kaitmazian
Browse files

fiber: introduce fiber_set_name_n function

NO_DOC=picodata internal patch
NO_CHANGELOG=picodata internal patch
NO_TEST=picodata internal patch
parent 73443b39
No related branches found
No related tags found
1 merge request!90Exports for pgproto (copy)
......@@ -1039,10 +1039,16 @@ fiber_loop(MAYBE_UNUSED void *data)
}
}
void
inline void
fiber_set_name(struct fiber *fiber, const char *name)
{
size_t size = strlen(name) + 1;
fiber_set_name_n(fiber, name, strlen(name));
}
void
fiber_set_name_n(struct fiber *fiber, const char *name, uint32_t len)
{
size_t size = len + 1;
if (size <= FIBER_NAME_INLINE) {
if (fiber->name != fiber->inline_name) {
free(fiber->name);
......
......@@ -949,6 +949,15 @@ fiber_signal_reset(void);
void
fiber_set_name(struct fiber *fiber, const char *name);
/**
* Set fiber name providing a length for it.
* @param fiber Fiber to set name for.
* @param name A new name of @a fiber.
* @param len Length of the string pointed to by @a name.
*/
void
fiber_set_name_n(struct fiber *fiber, const char *name, uint32_t len);
static inline const char *
fiber_name(struct fiber *f)
{
......
......@@ -253,6 +253,19 @@ fiber_name_test()
fiber_set_name(fiber(), long_name);
note("fiber name is truncated: %s.\n", fiber_name(fiber()));
fiber_set_name_n(fiber(), long_name, 10);
note("set fiber name with given length: %s.\n", fiber_name(fiber()));
fiber_set_name_n(fiber(), long_name, 0);
note("set fiber name with 0 length: %s.\n", fiber_name(fiber()));
const int n = 3;
fiber_set_name_n(fiber(), "a\0b", n);
note("set fiber name with a nul byte in it (don't do that): %s.\n",
fiber_name(fiber()));
fail_unless(memcmp(fiber_name(fiber()), "a\0b", n) == 0);
footer();
}
......
......@@ -7,6 +7,12 @@ OutOfMemory: Failed to allocate 42 bytes in allocator for exception
# fiber name is truncated: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.
# set fiber name with given length: aaaaaaaaaa.
# set fiber name with 0 length: .
# set fiber name with a nul byte in it (don't do that): a.
*** fiber_name_test: done ***
*** fiber_join_test ***
# exception propagated
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment