the hash approach of POSIX key
Gedare Bloom
gedare at rtems.org
Mon May 21 13:41:15 UTC 2012
On Mon, May 21, 2012 at 9:30 AM, Ashi <ashi08104 at gmail.com> wrote:
> Hi, all.
> I'm working on the POSIX key project(here is a introduction of it:[1]).
> Since using hash is a good candidate of the solution, I'm trying to do the
Hashing is a good candidate solution for what problem? It is not clear
to me what the hash solves, that is why to use a hash at all?
> design using hash. I'm not clear about how to deal with UThash[2] in RTEMS.
> Shall we directly include this lib or reimplemented in RTEMS? If assumed
> directly use, I think we can manage all keys in one hash table as like in
> the rbtree approach. Since UThash is able to use structure as it's hash key,
> then the POSIX_Keys_Control can be defined as:
>
> typedef struct {
> Objects_Control Object;
> void (*destructor) (void *);
> hash_key_t hash_key; /* use struct hash_key_t as a hash key */
> void *value;
> UT_hash_handle hh;
> } POSIX_Keys_Control;
>
> the hash_key_t type is a structure include Object id and pthread_key_t:
>
> typedef struct {
> Objects_Id thread_id;
> pthread_key_t key;
> } hash_key_t;
>
> Then all the keys' data is managed in one hash table. I've a question about
> this design: is it a waste of memory that every key data holds a
> POSIX_Keys_Control structure? If it is, I think we could manage it in a two
> level structure: first level manages all keys by one hash table, and each
> key manages its values in second level by one bash table:
>
> typedef struct {
> Objects_Control Object;
> Objects_Id Object.id; /* use Object.id as hash key, I don't know
> whether we could directly use Object as a hash key? I know it's no problem
> in UThash */
> key_node_t * key_node;
> UT_hash_handle hh;
> } POSIX_Keys_Control;
>
> typedef struct {
> Objects_Id thread_id; /* use thread_id as hash key */
> void *value;
> void (*destructor) (void *);
> UT_hash_handle hh;
> } key_node_t;
>
> And as Gedare suggested in my last discuss, the implementation should
> consider do actually work in in the supercore layer and shared between Posix
> Keys and Classic Task vars, however, I haven't think about it yet, I'm a
> little behind my work.
>
>
> links:
> [1]: http://www.rtems.com/ml/rtems-users/2012/april/msg00110.html
> [2]:http://uthash.sourceforge.net/
>
> --
> Best wishes!
> zw_yao
>
More information about the devel
mailing list