The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Продемонстрирован код, который по мнению SCO был скопирован ..., opennews (ok), 12-Июл-10, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


18. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от filosofem (ok), 12-Июл-10, 12:06 
>интересно, а сколько будет "int i;" в ядре линуха...

13990

Ответить | Правка | Наверх | Cообщить модератору

21. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от spanasikemail (ok), 12-Июл-10, 12:08 
>13990

Именно int i; ?


Ответить | Правка | Наверх | Cообщить модератору

23. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от filosofem (ok), 12-Июл-10, 12:14 
Именно. В основном в драйверах и фирмварях.
Ответить | Правка | Наверх | Cообщить модератору

24. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от spanasikemail (ok), 12-Июл-10, 12:16 
Плохо. Переменные обнулять нужно при объявлении, если им сразу не присваивается какое-то значение. Я думал, уж ядерщики это точно знают.


Ответить | Правка | Наверх | Cообщить модератору

25. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от filosofem (ok), 12-Июл-10, 12:18 
Ну это не сложно пропатчить при желании. =)
Ответить | Правка | Наверх | Cообщить модератору

27. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от spanasikemail (ok), 12-Июл-10, 12:21 
Это - несложно, а сколько там ещё таких объявлений. Нужно более интенсивно пользоваться инструментами анализа кода для кода, включаемого в ядро, я так считаю.
Ответить | Правка | Наверх | Cообщить модератору

41. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от starik (??), 12-Июл-10, 13:01 
Зачем? Какой  смысл в лишних инструкциях для обнуления? Просто нужно и всё?
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

52. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +2 +/
Сообщение от QuAzI (??), 12-Июл-10, 13:48 
Смысл в предсказуемости поведения кода, если дальше где-то что-то пойдёт не так. Вообще, ИМХО, чтобы исключить криворукость, это должен компилятор контролировать. Мол если гарантированно переменная дальше инициализируется, то можно и не обнулять, а если есть варианты, то обнулять однозначно.
Ответить | Правка | Наверх | Cообщить модератору

59. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +3 +/
Сообщение от pazkeemail (?), 12-Июл-10, 14:11 
> Вообще, ИМХО, чтобы исключить криворукость, это должен компилятор контролировать.

gcc это замечательно контролирует и выдает варнинги при использовании неинициализированной переменной. Потому за безмозглое обнуление локальных переменных надо руки вырывать с корнем, потому как в таком случае компилятор ничем не может помочь в поиске логических ошибок в коде.

Ответить | Правка | Наверх | Cообщить модератору

69. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +3 +/
Сообщение от Kibabemail (ok), 12-Июл-10, 14:46 
int i;
for(i=0; i<N; i++) {
...
}
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

105. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от СуперАноним (?), 12-Июл-10, 18:47 
Пора бы уже им на C99 переползать.
Ответить | Правка | Наверх | Cообщить модератору

111. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от User294 (ok), 12-Июл-10, 20:09 
>int i;

Все, сейчас SCO вас засудит за кражу их кода.

Ответить | Правка | К родителю #69 | Наверх | Cообщить модератору

127. "Продемонстрирован код, который по мнению SCO был скопирован ..."  –4 +/
Сообщение от iZEN (ok), 12-Июл-10, 22:43 
>>int i;
>
>Все, сейчас SCO вас засудит за кражу их кода.

Меняй язык программирования Це на Яву — не засудит. ;)

Ответить | Правка | Наверх | Cообщить модератору

155. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от User294 (ok), 13-Июл-10, 20:29 
Там засудят за какойнить i++. Невелика разница.
Ответить | Правка | Наверх | Cообщить модератору

157. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от Карбофос (ok), 13-Июл-10, 23:44 
вообще-то протензии scoтов по ядру. перепишите ядро на яве (ненаучная фантастика), тогда уж поболтаем на эту тему. ;)
Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

161. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от Карбофос (ok), 14-Июл-10, 02:07 
претензии. извиняюсь
Ответить | Правка | Наверх | Cообщить модератору

76. "Продемонстрирован код, который по мнению SCO был скопирован ..."  –1 +/
Сообщение от pavlinux (ok), 12-Июл-10, 15:56 
Знают.
А вы знаете, что инициализированная переменная занимает место в сегменте данных, а не кода?
По-русски - если инитить все переменные до использования ядро будет весить 32Mb
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

77. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от spanasikemail (ok), 12-Июл-10, 16:00 
про это не думал.

Ответить | Правка | Наверх | Cообщить модератору

82. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от raorn (?), 12-Июл-10, 16:13 
>А вы знаете, что инициализированная переменная занимает место в сегменте данных, а
>не кода?

Перестаньте пороть чушь.  В сегменте кода (.text) переменным не место.  А переменные инициализированные нулём всё равно попадают в .bss.

Ответить | Правка | К родителю #76 | Наверх | Cообщить модератору

83. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от Sw00p aka Jeromemail (?), 12-Июл-10, 16:21 
+1 в .bss

пс: незнаю как поступит компилятор если переменная прописанна и не будет изменяться вообще
ну типа в место константы - обычная переменная

Ответить | Правка | Наверх | Cообщить модератору

119. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от Ytch (?), 12-Июл-10, 21:32 
>пс: незнаю как поступит компилятор если переменная прописанна и не будет изменяться
>вообще
>ну типа в место константы - обычная переменная

В embedded-платформах обычно, если указан модификатор const, то в отдельной секции .const (точное название зависит от компилятора), а в зависимости от платформы, секция .const вообще может быть помещена в немодифицируемую память (типа flash program memory). Если модификатора const нет, то компиляторы обычно размещают переменные в секции с обычными переменными и инициализирует их при старте (то есть никак не учитывают тот факт, что они никогда не меняются) при этом размер растет, так как занимается двойной объем - сама переменная и данные (или код) для ее инициализации (при этом данные/код для инициализации в работе программы не используются - только один раз при старте).

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


Ответить | Правка | Наверх | Cообщить модератору

125. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от filosofem (ok), 12-Июл-10, 22:22 
А зачем не изменяющиеся переменные, значение которых известно при компиляции и которые используются как константы(то есть нет никаких манипуляций с их адресом), вообще в памяти размещать и адресовать, в чем профит?
Ответить | Правка | Наверх | Cообщить модератору

128. "Продемонстрирован код, который по мнению SCO был скопирован ..."  –1 +/
Сообщение от Sw00p aka Jeromemail (?), 12-Июл-10, 22:48 
вот я об этом же
скорее всего опции оптимизации это учитывают
Ответить | Правка | Наверх | Cообщить модератору

132. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от Ytch (?), 12-Июл-10, 23:30 
>вот я об этом же
>скорее всего опции оптимизации это учитывают

В некоторых компиляторах учитывают, в некоторых нет. Чтоб не полагаться на такие особенности лучше сразу написать const. А есть такие платформы и компиляторы под них, где даже const написать недостаточно, а надо еще и нестандартные ключевые слова писать (и хорошо если только директивами типа #pragma обойдется).

Ответить | Правка | Наверх | Cообщить модератору

131. "Продемонстрирован код, который по мнению SCO был скопирован ..."  –1 +/
Сообщение от Ytch (?), 12-Июл-10, 23:24 
Например, таблица синуса (часто нужна в цифровой обработке сигналов) на несколько килобайт или таблицы для преобразования кодировок.

Естественно, писать const int SuperVal = 5; большого смысла не имеет.

Ответить | Правка | К родителю #125 | Наверх | Cообщить модератору

173. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от pavlinux (ok), 15-Июл-10, 02:55 
>А зачем не изменяющиеся переменные, значение которых известно при компиляции и которые
>используются как константы(то есть нет никаких манипуляций с их адресом), вообще
>в памяти размещать и адресовать, в чем профит?

float *ptr = &3.14159265; // низя


const float PI = 3.14159265;
float *ptr = (float *)PI // можно

Ответить | Правка | К родителю #125 | Наверх | Cообщить модератору

102. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +1 +/
Сообщение от Карбофос (ok), 12-Июл-10, 18:36 
не обязательно. переменная может быть инициализирована, а не обнулена в след. строке и пр. кроме всего компайлер выдает предупреждения в случае подозрения отсутсвия инициализации.
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

81. "Продемонстрирован код, который по мнению SCO был скопирован ..."  –3 +/
Сообщение от pavlinux (ok), 12-Июл-10, 16:05 
>Именно. В основном в драйверах и фирмварях.

Да ты что!!!


#include <linux/version.h>
#include <linux/module.h>

int my_init(void ) {

int i;
printk(KERN_DEBUG " TEST: i = %d \n", i);
return 0;
}

module_init(my_init);

MODULE_LICENSE("GPL v2");

# insmod ./test.ko
# dmesg

TEST: i = 0


Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

92. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от Sw00p aka Jeromemail (?), 12-Июл-10, 17:17 
1) /tmp/test/hello.c:8: warning: ‘i’ is used uninitialized in this function

2) Jul 12 18:15:59 localhost kernel: init_module() called = -255520756

Ответить | Правка | Наверх | Cообщить модератору

96. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от Sw00p aka Jeromemail (?), 12-Июл-10, 17:41 
>[оверквотинг удален]
>
>module_init(my_init);
>
>MODULE_LICENSE("GPL v2");
>
>
># insmod ./test.ko
># dmesg
>
>TEST: i = 0

соответсвенно из ниже следующих моих комментов - если вывести из блока переменную Ы
вот тогда будет

Jul 12 18:39:29 localhost kernel: init_module() called = 0

+ int i;
int my_init(void ) {

- int i;
printk(KERN_DEBUG " TEST: i = %d \n", i);
return 0;
}

Ответить | Правка | К родителю #81 | Наверх | Cообщить модератору

133. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от pavlinux (ok), 13-Июл-10, 02:33 
>[оверквотинг удален]
>
>Jul 12 18:39:29 localhost kernel: init_module() called = 0
>
>+ int i;
>int my_init(void ) {
>
>- int i;
> printk(KERN_DEBUG " TEST: i = %d \n", i);
> return 0;
>}

Не хочет...  
INT: i = 0


/*
*
*/
#include <linux/version.h>
#include <linux/module.h>

int i;

int my_init(void ) {

         printk(KERN_DEBUG "INT: i = %d\n", i);
return 0;

}

module_init(my_init);

MODULE_LICENSE("GPL v2");

# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.5/lto-wrapper
Target: x86_64-suse-linux
Thread model: posix
gcc version 4.5.0 20100628 [gcc-4_5-branch revision 161494] (SUSE Linux)

# uname -a
Linux suse64 2.6.32.16 #6 SMP PREEMPT Tue Jul 6 21:09:44 MSD 2010 x86_64 x86_64 x86_64 GNU/Linux

Ответить | Правка | Наверх | Cообщить модератору

139. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от Sw00p aka Jeromemail (?), 13-Июл-10, 10:49 
что не хочет ???

тут будет 0 - правильно (int i - глобальная)

##########################
#include <linux/version.h>
#include <linux/module.h>

int i;

int my_init(void ) {

         printk(KERN_DEBUG "INT: i = %d\n", i);
return 0;

}

module_init(my_init);

MODULE_LICENSE("GPL v2");
###########################

Ответить | Правка | Наверх | Cообщить модератору

144. "Продемонстрирован код, который по мнению SCO был скопирован ..."  +/
Сообщение от pavlinux (ok), 13-Июл-10, 12:26 
>что не хочет ???
>тут будет 0 - правильно (int i - глобальная)

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

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру