LINUX.ORG.RU

История изменений

Исправление gns, (текущая версия) :

Да все просто. Есть некий бандл памяти. В начале бандла лежит массив структур вида

struct some_struct {
   ...... (какие-то нужные поля)
    union {
        char *k_path;     /* file path -- kernel's view */
        ptrdiff_t u_path; /* file path -- userspace view */
    } p;
    struct hlist_node node;
}

После этого массива лежат выровненные на 8 байт строки, на начало строки светит поле u_path (оффсет от начала бандла, например).

Бандл формируется в юзерспейсе и грузится в ядро, ядро пересчитывает оффсеты в указатели и строит хэш-таблицу используя поле hlist_node.

И телемаркет! И лишней памяти в ядре выделять не надо, все необходимые поля уже в бандле зарезервированы.

Сверху плюсы, внизу С. Ну и все друг друга знают как родные.

Исправление gns, :

Да все просто. Есть некий бандл памяти. В начале бандла лежит массив структур вида

struct some_struct {
   ...... (какие-то нужные поля)
    union {
        char *k_path;     /* file path -- kernel's view */
        ptrdiff_t u_path; /* file path -- userspace view */
    } p;
    struct hlist_node node;
}

После этого массива лежат выровненные на 8 байт строки, на начало строки светит поле u_path (оффсет от начала бандла, например).

Бандл формируется в юзерспейсе и грузится в ядро, ядро пересчитывает оффсеты в указатели и строит хэш-таблицу используя поле hlist_node.

И телемаркет!

Сверху плюсы, внизу С. Ну и все друг друга знают как родные.

Исходная версия gns, :

Да все просто. Есть некий бандл памяти. В начале бандла лежит массив структур вида

struct some_struct {
   ...... (какие-то нужные поля)
    union {
        char *k_path;     /* file path -- kernel's view */
        ptrdiff_t u_path; /* file path -- userspace view */
    } p;
    struct hlist_node node;
}


После этого массива лежат выровненные на 8 байт строки, на начало строки светит поле u_path (оффсет от начала бандла, например).

Бандл формируется в юзерспейсе и грузится в ядро, ядро пересчитывает оффсеты в указатели и строит хэш-таблицу используя поле hlist_node. 

И телемаркет!

Сверху плюсы, внизу С. Ну и все друг друга знают как родные.