/* 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); }
thread_id_t thread_id() { ADOBE_ONCE_INSTANCE(thread_id_once); return reinterpret_cast<thread_id_t>(&ADOBE_THREAD_LOCAL_STORAGE_ACCESS(thread_id)); }