/* write_state -- save UUID generator state back to non-volatile storage */
void write_state(boost::uint16_t clockseq, uuid_time_t timestamp, uuid_node_t node) {
    init_zuid_sys_dep_once();

    bool& state_inited(ADOBE_THREAD_LOCAL_STORAGE_ACCESS(zuid_uuid_state_inited));
    uuid_state_t& state(ADOBE_THREAD_LOCAL_STORAGE_ACCESS(zuid_uuid_state));

    /* always save state to volatile shared state */
    state.cs_m = clockseq;
    state.ts_m = timestamp;
    state.node_m = node;

    state_inited = true;
}
void get_ieee_node_identifier(uuid_node_t* node) {
    init_zuid_sys_dep_once();

    bool& inited(ADOBE_THREAD_LOCAL_STORAGE_ACCESS(zuid_ieee_node_inited));
    adobe::uuid_node_t& saved_node(ADOBE_THREAD_LOCAL_STORAGE_ACCESS(zuid_ieee_node));

    if (!inited) {
        random_address(&saved_node);

        inited = true;
    }

    *node = saved_node;
}
/* read_state -- read UUID generator state from non-volatile store */
boost::int16_t read_state(boost::uint16_t* clockseq, uuid_time_t* timestamp, uuid_node_t* node) {
    init_zuid_sys_dep_once();

    bool& state_inited(ADOBE_THREAD_LOCAL_STORAGE_ACCESS(zuid_uuid_state_inited));

    if (!state_inited)
        return boost::int16_t(0);

    uuid_state_t& state(ADOBE_THREAD_LOCAL_STORAGE_ACCESS(zuid_uuid_state));

    *clockseq = state.cs_m;
    *timestamp = state.ts_m;
    *node = state.node_m;

    return boost::int16_t(1);
}
Пример #4
0
thread_id_t thread_id()
{
    ADOBE_ONCE_INSTANCE(thread_id_once);

    return reinterpret_cast<thread_id_t>(&ADOBE_THREAD_LOCAL_STORAGE_ACCESS(thread_id));
}