On 12/08/2015 14:27, Bill Fischofer wrote:
The cast plus the uint64_t typedef is the v1 patch. So is that one now good?

For me v1 was good if I remember. And v2 with that fix also is good. Petri do you have any notes?


Maxim.


On Tue, Dec 8, 2015 at 4:45 AM, Maxim Uvarov <maxim.uva...@linaro.org <mailto:maxim.uva...@linaro.org>> wrote:

    On 12/08/2015 13:09, Savolainen, Petri (Nokia - FI/Espoo) wrote:


            -----Original Message-----
            From: EXT Maxim Uvarov [mailto:maxim.uva...@linaro.org
            <mailto:maxim.uva...@linaro.org>]
            Sent: Tuesday, December 08, 2015 10:44 AM
            To: Savolainen, Petri (Nokia - FI/Espoo);
            lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>
            Subject: Re: [lng-odp] [API-NEXT PATCHv2] linux-generic:
            tm: use
            odp_hash_crc32c() api to avoid arch issues

            On 12/08/2015 10:50, Savolainen, Petri (Nokia - FI/Espoo)
            wrote:

                Bill,

                hash_tbl_entry is now uintptr_t, which is 64 bits on a
                64 bit build and

            32 bits on a 32 bit build. These shifts and all other
            lines  that expect
            that hash_tbl_entry (pointer size) is 64 bits should be
            updated also.

                -Petri

            Yes, that is what I said before.  For now we can go with
            simple using 64
            bit hash entries for 32 bit case also.
            Where 6 upper bits will be for defining first or secondary
            hash and it's
            size. And all lower 32 for address pointer.
            I.e. 26 bits will be lost.

            #define PRIMARY_HASH_TBL_SIZE    (16 * 1024)
            26 * PRIMARY_HASH_TBL_SIZE = 425984 = 53248 bytes = 13 pages;

            #define SECONDARY_HASH_TBL_SIZE  128
            26 * SECONDARY_HASH_TBL_SIZE = 3328 = 416 bytes

            So we lost for 32 bits some memory but code has to work in
            the same way
            as for 64 bits.
            After that if memory efficient fix will be needed for
            somebody than he
            can fix it.
            Or we will reuse some odp hash table api instead of
            odp_name_table.c.

            So for now I would do quick fix with some comment that
            there is unused
            memory for 32 bit case.

            --- a/platform/linux-generic/odp_name_table.c
            +++ b/platform/linux-generic/odp_name_table.c
            @@ -93,7 +93,7 @@ typedef struct {
                * NOT zero then this values points to a (linked list of)
            name_table_entry_t
                * records AND the bottom 6 bits are the length of this
            list.
                */
            -typedef uintptr_t hash_tbl_entry_t;
            +typedef uint64_t hash_tbl_entry_t;


            BR,
            Maxim.


        odp_name_table.c: In function 'make_hash_tbl_entry':
        odp_name_table.c:570:20: error: cast from pointer to integer
        of different size [-Werror=pointer-to-int-cast]
           hash_tbl_entry  = (hash_tbl_entry_t)name_tbl_entry;


        static hash_tbl_entry_t make_hash_tbl_entry(name_tbl_entry_t
        *name_tbl_entry,
uint32_t entry_cnt)
        {
                hash_tbl_entry_t hash_tbl_entry;
                uint32_t         new_entry_cnt;

                new_entry_cnt   = MIN(entry_cnt + 1, 0x3F);
                hash_tbl_entry  =
        (hash_tbl_entry_t)(uintptr_t)name_tbl_entry;
                hash_tbl_entry &= ~0x3F;
                hash_tbl_entry |= new_entry_cnt;
                return hash_tbl_entry;
        }


        And compiler is still happy with the casts? Maybe the casting
        issue was actually caused by removal of the uintptr_t cast above.

        -Petri

    Petri, Looks like you did not apply that patch. If you apply it
    and do change to uint64_t everything compiles.

    Maxim.

    _______________________________________________
    lng-odp mailing list
    lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>
    https://lists.linaro.org/mailman/listinfo/lng-odp



_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to