Компиляция модулей.

Тема в разделе "WASM.UNIX", создана пользователем featurelles, 9 ноя 2009.

  1. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Объясните мне пожалуйста.
    Я установил source ядра, хидеры. /usr/src/kernel-linus-2.6.31.6-1mdv/
    в /usr/src/kernel-linus-2.6.31.6-1mdv/net/core/dev.c
    находится функция net_rx_action
    вот её код
    Код (Text):
    1. static void net_rx_action(struct softirq_action *h)
    2. {
    3.     struct list_head *list = &__get_cpu_var(softnet_data).poll_list;
    4.     unsigned long time_limit = jiffies + 2;
    5.     int budget = netdev_budget;
    6.     void *have;
    7.  
    8.     local_irq_disable();
    9.  
    10.     while (!list_empty(list)) {
    11.         struct napi_struct *n;
    12.         int work, weight;
    13.  
    14.         /* If softirq window is exhuasted then punt.
    15.          * Allow this to run for 2 jiffies since which will allow
    16.          * an average latency of 1.5/HZ.
    17.          */
    18.         if (unlikely(budget <= 0 || time_after(jiffies, time_limit)))
    19.             goto softnet_break;
    20.  
    21.         local_irq_enable();
    22.  
    23.         /* Even though interrupts have been re-enabled, this
    24.          * access is safe because interrupts can only add new
    25.          * entries to the tail of this list, and only ->poll()
    26.          * calls can remove this head entry from the list.
    27.          */
    28.         n = list_entry(list->next, struct napi_struct, poll_list);
    29.  
    30.         have = netpoll_poll_lock(n);
    31.  
    32.         weight = n->weight;
    33.  
    34.         /* This NAPI_STATE_SCHED test is for avoiding a race
    35.          * with netpoll's poll_napi().  Only the entity which
    36.          * obtains the lock and sees NAPI_STATE_SCHED set will
    37.          * actually make the ->poll() call.  Therefore we avoid
    38.          * accidently calling ->poll() when NAPI is not scheduled.
    39.          */
    40.         work = 0;
    41.         if (test_bit(NAPI_STATE_SCHED, &n->state)) {
    42.             work = n->poll(n, weight);
    43.             trace_napi_poll(n);
    44.         }
    45.  
    46.         WARN_ON_ONCE(work > weight);
    47.  
    48.         budget -= work;
    49.  
    50.         local_irq_disable();
    51.  
    52.         /* Drivers must not modify the NAPI state if they
    53.          * consume the entire weight.  In such cases this code
    54.          * still "owns" the NAPI instance and therefore can
    55.          * move the instance around on the list at-will.
    56.          */
    57.         if (unlikely(work == weight)) {
    58.             if (unlikely(napi_disable_pending(n))) {
    59.                 local_irq_enable();
    60.                 napi_complete(n);
    61.                 local_irq_disable();
    62.             } else
    63.                 list_move_tail(&n->poll_list, list);
    64.         }
    65.  
    66.         netpoll_poll_unlock(have);
    67.     }
    68. out:
    69.     local_irq_enable();
    70.  
    71. #ifdef CONFIG_NET_DMA
    72.     /*
    73.      * There may not be any more sk_buffs coming right now, so push
    74.      * any pending DMA copies to hardware
    75.      */
    76.     dma_issue_pending_all();
    77. #endif
    78.  
    79.     return;
    80.  
    81. softnet_break:
    82.     __get_cpu_var(netdev_rx_stat).time_squeeze++;
    83.     __raise_softirq_irqoff(NET_RX_SOFTIRQ);
    84.     goto out;
    85. }
    Мне нужно воспроизвести её в коде своего модуля, копирую её и называю my_net_rx_action
    Когда начинаю компилировать модуль, он выдаёт ошибки
    WARNING: "netdev_budget" [/home/featurelles/module/init.ko] undefined!
    WARNING: "per_cpu__netdev_rx_stat" [/home/featurelles/module/init.ko] undefined!

    Эти переменные находятся в скопированной мной функции my_net_rx_action
    Что нужно сделать, чтоб эти параметры брались из source ядра. ( ведь эти переменные используются в /usr/src/kernel-linus-2.6.31.6-1mdv/net/core/dev.c в функции net_rx_action )
     
  2. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    А зачем компании вкладывают деньги в проекты под лицензией GPL , какой смысл?

    Программистам должен кто-то платить за разработку, тоесть он должен на когото работать.
    А если собственная разработка? не работая на когото.. то как тогда заработать? если деньги не за продажу, а за разработку ((
     
  3. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Лицензия GPL не запрещает получать прибыль.
     
  4. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Эт вы про систему зароботка red hat ?
    Вообще как заработать программисту под линекс, в нашем не лёгком мире?