Hi, all. <br>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 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:<br>


<br>typedef struct {<br>    Objects_Control Object;<br>    void (*destructor) (void *);<br>    hash_key_t hash_key; /* use struct hash_key_t as a hash key */<br>    void *value;<br>    UT_hash_handle hh; <br>} POSIX_Keys_Control;<br>

<br>the hash_key_t type is a structure include Object id and pthread_key_t:<br>
<br>typedef struct {<br>    Objects_Id thread_id;<br>    pthread_key_t key;<br>} hash_key_t;<br>
<br>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:<br>


<br>typedef struct {<br>    Objects_Control Object; <br>    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  */<br>


    key_node_t * key_node;<br>
    UT_hash_handle hh; <br>
} POSIX_Keys_Control;<br><br>typedef struct {<br>   Objects_Id thread_id; /* use thread_id as hash key */<br>   void *value;<br>   void (*destructor) (void *);<br>   UT_hash_handle hh; <br>} key_node_t;<br><br>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.<br><br><br>links:<br>
[1]: <a href="http://www.rtems.com/ml/rtems-users/2012/april/msg00110.html" target="_blank">http://www.rtems.com/ml/rtems-users/2012/april/msg00110.html</a><br>[2]:<a href="http://uthash.sourceforge.net/" target="_blank">http://uthash.sourceforge.net/</a><br clear="all">



<br>-- <br>Best wishes!<br>zw_yao<br><br>