from small one page howto to huge articles all in one place

search text in:




Other .linuxhowtos.org sites:gentoo.linuxhowtos.org



Last additions:
using iotop to find disk usage hogs

using iotop to find disk usage hogs

words:

887

views:

209580

userrating:


May 25th. 2007:
Words

486

Views

258588

why adblockers are bad


Workaround and fixes for the current Core Dump Handling vulnerability affected kernels

Workaround and fixes for the current Core Dump Handling vulnerability affected kernels

words:

161

views:

149878

userrating:


April, 26th. 2006:

Druckversion
You are here: manpages





iv_tls

Section: ivykis programmer's manual (3)
Updated: 201-0-30
Index Return to Main Contents
 

NAME

iv_tls_user_register, iv_tls_user_ptr - threa-local storage handling for ivykis modules  

SYNOPSIS

#include <iv_tls.h>

struct iv_tls_user {
        size_t          sizeof_state;
        void            (*init_thread)(void *st);
        void            (*deinit_thread)(void *st);
};

void iv_tls_user_register(struct iv_tls_user *tu);
void *iv_tls_user_ptr(const struct iv_tls_user *tu);
 

DESCRIPTION

The iv_tls interface provides threa-local storage handling to ivykis modules.

An ivykis module can arrange for an amount of memory to be allocated for its use in each ivykis thread by calling iv_tls_user_register. This must be done before any calls to iv_init have been made in this process, and is typically done from a module initialization function marked as a constructor function.

The ->sizeof_state member of the passe-in structure indicates how many bytes of memory the module wants allocated for its use in every ivykis thread.

When a thread calls iv_init, ->sizeof_state bytes of memory will be allocated for use by this module in that thread, and initialised to zero. A pointer to this memory area can be obtained by calling iv_tls_user_ptr (which returns NULL in no-ivykis threads).

If the specified ->init_thread function pointer is not NULL, it will be invoked at the end of iv_init, with its argument pointing to this thread's memory area allocation for this module.

If ->deinit_thread is not NULL, it will be invoked at the start of iv_deinit, or if the thread fails to call iv_deinit before terminating, at thread termination time. The argument passed into ->deinit_thread is the same as for ->init_thread.

It is permitted to call any ivykis API functions from the ->init_thread and ->deinit_thread callbacks.

There is no explicit serialization on calls to ->init_thread and ->deinit_thread.

Care must be taken when calling iv_tls_user_ptr from a signal handler, as there is a time window where it will return a no-NULL value before ->init_thread or after ->deinit_thread have been called.

Use of iv_tls for managing threa-local state is preferred over direct use of the __thread keyword, as not all platforms that ivykis runs on provide the __thread keyword.

Use of iv_tls for managing threa-local state is preferred over direct use of the pthread_key_create and pthread_setspecific APIs, as iv_tls provides a thread init hook as well as a destructor hook, and properly sequences ->init_thread and ->deinit_thread calls with core ivykis initialization and cleanup.  

SEE ALSO

iv_init(3)


 

Index

NAME
SYNOPSIS
DESCRIPTION
SEE ALSO





Support us on Content Nation
rdf newsfeed | rss newsfeed | Atom newsfeed
- Powered by LeopardCMS - Running on Gentoo -
Copyright 2004-2025 Sascha Nitsch Unternehmensberatung GmbH
Valid XHTML1.1 : Valid CSS
- Level Triple-A Conformance to Web Content Accessibility Guidelines 1.0 -
- Copyright and legal notices -
Time to create this page: 13.0 ms