|
Boost : |
From: Murali Kishore (bmuralikishore_at_[hidden])
Date: 2024-09-30 16:44:21
Hi,
I am observing that the first 4 bytes are changed to zero, let me know what
is the reason for this.
before insert:
(gdb) p instance
$1 = (ngp::timer_manager::timer_instance_t &) @0x7fffb610e118: {padding =
*1919*, id = 2, api_id = 1, next = {__d = {
__r = 98595033760891}}, period = {__r = 20000}, max_iterations = -1,
running = false, user_data = 0x0,
target_identifier = 0,
startAddr = 0x5555555c22cb
<boost::interprocess::ipcdetail::CtorArgN<ngp::timer_manager::timer_instance,
false, int, unsigned long&, unsigned long&,
std::chrono::time_point<std::chrono::_V2::steady_clock,
std::chrono::duration<long, std::ratio<1l, 1000000000l> > >,
std::chrono::duration<long, std::ratio<1l, 1000l> >, int&, void*&, unsigned
int&>::construct<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul>(void*,
boost::interprocess::ipcdetail::bool_<false>,
boost::container::dtl::index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul>
const&)+401>, startTime = 177880440076688, interval = 20000}
*after insert (queue->insert(instance))*
(gdb) p instance
$4 = (ngp::timer_manager::timer_instance_t &) @0x7fffb610e118: {*padding =
0*, id = 2, api_id = 1, next = {__d = {
__r = 98595033760891}}, period = {__r = 20000}, max_iterations = -1,
running = false, user_data = 0x0,
target_identifier = 0,
startAddr = 0x5555555c22cb
<boost::interprocess::ipcdetail::CtorArgN<ngp::timer_manager::timer_instance,
false, int, unsigned long&, unsigned long&,
std::chrono::time_point<std::chrono::_V2::steady_clock,
std::chrono::duration<long, std::ratio<1l, 1000000000l> > >,
std::chrono::duration<long, std::ratio<1l, 1000l> >, int&, void*&, unsigned
int&>::construct<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul>(void*,
boost::interprocess::ipcdetail::bool_<false>,
boost::container::dtl::index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul>
const&)+401>, startTime = 177880440076688, interval = 20000}
here queue is
typedef bip::multiset<timer_instance_t, timer_comparator,
ShmemAllocator_Timer> timer_queue_t;
timer_queue_t* queue;
typedef struct alignas(4) timer_instance
{
uint32_t padding;
timer_id_t id;
uint64_t api_id;
timestamp_t next;
millis_t period;
int32_t max_iterations;
// handler_type_t handler;
bool running;
void* user_data;
uint32_t target_identifier;
void* startAddr;
uint64_t startTime;
uint64_t interval;
}
Regards,
Murali Kishore
On Sat, Sep 28, 2024 at 3:17â¯PM Murali Kishore <bmuralikishore_at_[hidden]>
wrote:
> Thanks, it worked.
>
> On Sat, Sep 28, 2024 at 2:36â¯PM Joaquin M López Muñoz via Boost <
> boost_at_[hidden]> wrote:
>
>> El 28/09/2024 a las 9:49, Murali Kishore via Boost escribió:
>> > [...]
>> >
>> > // Define the unordered_map type
>> > typedef boost::unordered_map<timer_id_t, timer_instance_t,
>> > std::hash<timer_id_t>, std::less<timer_id_t>, MapAllocator>
>> > timer_instance_map_t;
>>
>> You have to use std::equal_to<timer_id_t> rather than
>> std::less<timer_id_t>. Please try and let us know if that solves your
>> issue.
>>
>> Joaquin M Lopez Munoz
>>
>> _______________________________________________
>> Unsubscribe & other changes:
>> http://lists.boost.org/mailman/listinfo.cgi/boost
>>
>
>
> --
> Regards,
> Murali Kishore
>
-- Regards, Murali Kishore
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk