The idiom I use for keys that are > 32 bits is to have a function to return a key, with a 'persist' flag
e.g. in packet-pdcp-lte.c : /* Convenience function to get a pointer for the hash_func to work with */ static gpointer get_report_hash_key(guint16 SN, guint32 frameNumber, pdcp_lte_info *p_pdcp_lte_info, gboolean do_persist) { static pdcp_result_hash_key key; pdcp_result_hash_key *p_key; /* Only allocate a struct when will be adding entry */ if (do_persist) { p_key = wmem_new(wmem_file_scope(), pdcp_result_hash_key); } else { memset(&key, 0, sizeof(pdcp_result_hash_key)); p_key = &key; } /* Fill in details, and return pointer */ p_key->frameNumber = frameNumber; p_key->SN = SN; p_key->plane = (guint8)p_pdcp_lte_info->plane; p_key->channelId = p_pdcp_lte_info->channelId; p_key->direction = p_pdcp_lte_info->direction; p_key->notUsed = 0; return p_key; } then call with do_persist=TRUE for storing, and FALSE for lookup Martin On Mon, Feb 16, 2015 at 3:11 PM, Evan Huus <eapa...@gmail.com> wrote: > On Mon, Feb 16, 2015 at 10:08 AM, Richard Sharpe > <realrichardsha...@gmail.com> wrote: > > On Mon, Feb 16, 2015 at 6:55 AM, Evan Huus <eapa...@gmail.com> wrote: > >> Create the wmem_map using g_int64_equal instead of g_direct_equal and > >> wmem_int64_hash instead of g_direct_hash. Create a wmem_file_scope() > >> copy of the key, and pass the resulting pointer to the insert > >> function. > > > > Hmmm, why do we need a wmem_file_scope() copy of the key? We get the > > key in each request and response and I don't store the key anywhere. > > The map itself has to store the key in order to use it for future > lookups. When the key is only 32 bits you can make the pointer itself > store the key, and since the pointer gets copied you don't need an > explicit copy of the key. But when the pointer is just a pointer, you > need a file-scope copy of the key. > ___________________________________________________________________________ > Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> > Archives: http://www.wireshark.org/lists/wireshark-dev > Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev > mailto:wireshark-dev-requ...@wireshark.org > ?subject=unsubscribe >
___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe