Получить доступ к указателю из функции =)

Тема в разделе "WASM.BEGINNERS", создана пользователем featurelles, 13 авг 2009.

  1. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    TLS, Именованные секции.. ребят, вы осоловели? Это же стандартная задача которая решается средствами ЯЗЫКА, зачем дергать операционную систему? Тем более, что тут линукс (да и это НЕ важно)
    Заюзать глобальную перменную с extern надо

    Советчики, блин. Болезнь Clerk'а решать все техническими средствами заразна
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Great
    Я сказал что параметры через именованные секции передавать нельзя. Насчёт остального не знаю.
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Да ребята выше просто любители из пушек по воробьям стрелять.
     
  4. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Хм, пробовал через extern простые целые выводить, всё работает без каких либо проблем.
    Когда пробаю работать с указателем на структуру, то сразу смерть ядра)
    Перед вызовом перехватчика адрес указателя на структуры pointer == d7100000
    И если в перехватчике объявить переменную так extern struct serv_struc *serv_ptr;
    и попытаться вывести адрес serv_ptr то получится pointer == (null)

    Не правильно работаю с extern ?
    ( задаю этот вопрос, так как методом тыка устал проверять, так как это == reboot компа ... а для вирт машины, компик слабоват)
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    featurelles
    Там нечего неправильно использовать. В одном файле объявляешь переменную:
    Код (Text):
    1. typename Varname;
    в другом файле используешь
    Код (Text):
    1. extern typename Varname;
    где-то ты лажанул со сборкой (я не знаю особенностей сборки модулей ядра в линуксе). Это тебе скорее в раздел WASM.UNIX.
     
  6. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Great
    Makefile : obj-m += try.o
    Компиляция: [root@localhost prog]# clear && make -C /usr/src/linux-`uname -r` SUBDIRS=$PWD modules
    gcc версия 4.3.2 (GCC)
    Linux localhost 2.6.29.6-server-1mnb #1 SMP Sun Jul 5 20:19:48 EDT 2009 i686 Intel(R) Pentium(R) 4 CPU 1.80GHz GNU/Linux

    Если, кто знает , где у меня ошибка... please отпишите.
    В раздел wasm/unix пока писать не буду, так как проблема..скорее в # WASM.BEGINNERS подходит
     
  7. icent

    icent New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2009
    Сообщения:
    154
    Я вообще почему-то подумал, что он на асме кодит)
     
  8. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Я не проч сделать асм ставки) если от этого будет результат.
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    icent
    Ну в этом случае тоже нет необходимости насиловать операционную систему
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    featurelles
    Ну вот станно, числа значит передаются, а указатель не могет? Указатель это тоже число. ^)
     
  11. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    ещё раз, для точности, опишу всю проблему поподробней.
    Всё находится в одном файле.
    объявлен указатель на структуру struct server_struct *serv_ptr
    для этого указателя выделяется много памяти через kmalloc
    потом указатель передаётся неким функциями, которые заполняют структуры на которые он указывают (заполняют верно,ошибок там нету)

    перед регистрацие перехватчиков в ОС. Проверяю этот указатель. Вывожу его адрес , и данные. Всё на месте.
    printk("Адрес указателя == %p \n", serv_ptr );
    ( Вывод: Адрес указателя == c7894000 )


    В функции перехватчика объявляю extern struct server_struct *serv_ptr; ... по идее это означает, что я обращаюсь к указателю вне функции.
    printk("Адрес указателя в функции обработчике == %p \n", serv_ptr );
    ( Вывод: Адрес указателя в функции обработчике == (null) )

    Если проблема в синтаксисе си) то я думаю, Вы это заметите. Если надо что-то в Makefile для сборки написать, то слушаю))))
     
  12. icent

    icent New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2009
    Сообщения:
    154
    Привычка мыслить в ракурсе шелл-кода %) Если бы инициализация структур происходила в базонезависимом коде.. средствами языка тут бы не обошлось.
     
  13. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Booster
    Согласен на 99% тока дополню) что это просто данные в виде числа.
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Попробуй вынести объявление экстерн за тело функции.
    А вообще фигня какая-то, указатель тоже число, верно заметили.

    PS.(upd): если бы проблема была в синтаксисе, оно бы не скомпилировалось или не собралось
     
  15. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    0_о ну ладно, пошел искать в компьютере данные в виде зайцев
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    icent
    Ну вообше большинство программ все-таки "белые" )

    Это число на 100%. "указатель - данные в виде числа" это бред тоже на 100% )
     
  17. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    featurelles
    Ну так приведи указатель к числу и передай как число ^)
     
  18. icent

    icent New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2009
    Сообщения:
    154
    featurelles покажите сиськи) Всмысле код.. код) Больше кода - как объявляешь, где структура описана и т.д.
     
  19. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    SPA
    Компьютер оперирует с данными) которые представлены числами.
    8бит == 1 байт == данные... == и если данные размером один байт 1111 1111 то это представляется чилслом 256 ....или я не прав?

    Щас попробую)
     
  20. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    icent
    сейчас написано 1245 строк кода)..... не покажу всё))))