В списке рассылки разработчиков Linux-ядра представлен (https://lkml.org/lkml/2011/1/27/127) инструментарий undertaker (http://vamos.informatik.uni-erlangen.de/trac/undertaker), созданный на базе исследовательского проекта VAMOS (http://www4.informatik.uni-erlangen.de/Research/VAMOS/) и предназначенный для выявление проблем с использованием директив препроцессора в исходных текстах с Linux-ядром. Undertaker выполняет статический анализ кода и позволяет определить такие проблемы, как некорректное включение или выключение условных блоков препроцессора, не соответствующих заданной конфигурации (Kconfig).Наглядно оценить результаты проверки Linux-ядра 2.6.38-rc1 можно на данной странице (http://www4.informatik.uni-erlangen.de/Research/VAMOS/linux-.../).
URL: https://lkml.org/lkml/2011/1/27/127
Новость: http://www.opennet.me/opennews/art.shtml?num=29429
http://www4.informatik.uni-erlangen.de/Research/VAMOS/linux-...
537 строка#ifdef CONFIG_PCI_MMCONFIG
else if (!strcmp(str, "nommconf")) {
pci_probe &= ~PCI_PROBE_MMCONF;
return NULL;
}
else if (!strcmp(str, "check_enable_amd_mmconf")) {
pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF;
return NULL;
}
#endifЭто оно считает не корректно?
А по-моему, если CONFIG_PCI_MMCONFIG в ядре нету, то и сравнивать не надо (strcmp)
и снимать флаг PCI_PROBE_MMCONF или добавлять PCI_CHECK_ENABLE_AMD_MMCONF,
чтоб потом PCI проверяло то, чего нет. :-/----
За то я нашёл другой косяк :),
там же на 20-ой строке:
unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 | PCI_PROBE_MMCONF;
Причем пофиг, есть или нет CONFIG_PCI_MMCONFIG---
Порадовало вот это
/* Define this to allow debugging output */
#undef IPCONFIG_DEBUG#ifdef IPCONFIG_DEBUG
#define DBG(x) printk x
....
Так держать.
> Так держать.undertaker.cpp: В функции ‘int main(int, char**)’:
undertaker.cpp:346:49: предупреждение: из-за ограниченности диапазона типа данных, результат сравнения всегда ложь
undertaker.cpp:346:72: предупреждение: из-за ограниченности диапазона типа данных, результат сравнения всегда ложь:-)
Это млин, какая-то курсовая работа студней Универа Santa Catarina из Бразилии,
где много диких абизян.int threads = 1;
...
threads = strtol(optarg, (char **)0, 10);strtol - переводиться как String To Long, у ниха threads = int
--- undertaker/undertaker.cpp 2011-01-31 00:14:46.713000046 +0300
+++ undertaker/undertaker.cpp 2011-01-31 00:13:49.622000068 +0300
@@ -314,7 +314,7 @@
char *worklist = NULL;
char *whitelist = NULL;
- int threads = 1;
+ long int threads = 1;
std::list<std::string> models;
std::string main_model = "x86";
/* Default is dead/undead analysis */
И ЭТИ ЛЮДИ ЗАНИМАЮТСЯ АНАЛИЗОМ КАЧЕСТВА КОДА ЯДРА ..... :)
А чему удивляться, корпасты же рулят, нормальных проектов по пальцам перещитать, либо студентики проги недоделки клепают, либо корпоративные гиганты поекты открывают (или не открывают), такие что на 10Гб система уже не лезет, зато wma в mp3 конвертнуть нечем.
> зато wma в mp3 конвертнуть нечемИспользуй ffmpeg, Люк
Вот именно, половина проектов пишется студентами, потому как имея чуть больший опыт, легко находится существующее решение проблемы и не изобретается очередной велосипед. А большая часть проектов в мире это таки велосипеды разной степени свежести.
Ваша правда.Только сколько Вы можете назвать законченных проектов. Законченных и поддерживаемых, а не заброшенных. Большенство выходят за рамки первоначального функционала, разбухают как на дрожжах, грузят систему "дополнительными возможностями" так, что на основные ресурсов не хватает, вот и пишут.
> Ваша правда.
> Только сколько Вы можете назвать законченных проектов. Законченных и поддерживаемых, а
> не заброшенных. Большенство выходят за рамки первоначального функционала, разбухают как
> на дрожжах, грузят систему "дополнительными возможностями" так, что на основные ресурсов
> не хватает, вот и пишут.Ни одного. Таких не бывает в принципе. Проекты развиваются по тем же законам, что и любая система. Пока проект нужен разработчику, проект будет развиваться и поддерживаться. как только интерес разработчика угасает, проект ничто не спасет. И все характеристики типа "на дрожжах, грузят систему" субъективны.
Хм.. интересная позиция, то есть по-вашему, проект не может быть подхвачен кем-то другим?
или разработчики не могут умеренно расширять функционал.. Ядро линухи, наглядный пример того, что могут.
> Хм.. интересная позиция, то есть по-вашему, проект не может быть подхвачен кем-то
> другим?
> или разработчики не могут умеренно расширять функционал.. Ядро линухи, наглядный пример
> того, что могут.Вы считаете, что разработчик это тот кто начал проект? Те кто подхватят, точно так же проходят по статье "разработчик". Насчет "неумеренно расширять", утверждение спорное, если функционал расширяется, то разрабам это нужно зачем-то. без причины и кошка не мяукнет :)
> без причины и кошка не мяукнет :)Больные на голову кошки, бывают. И разрабы по большей части люди, со свойственной склонностью к ошибкам, им манагер сказал они сделали.
>> без причины и кошка не мяукнет :)
> Больные на голову кошки, бывают. И разрабы по большей части люди, со
> свойственной склонностью к ошибкам, им манагер сказал они сделали.Это смотря какие причины вы признаете адекватными. Кому-то причина это облегчить себе разработку заказанного софта, а кому-то просто перед девушкой похвастаться. Кому-то причина - планы по продаже нового софта, а кому-то улучшение имиджа. Но причина есть всегда, а адекватность причины важна только самому разработчику.
Ну почему же только ему, мне как юзеру тоже важно, я как ни как учился его софтом пользоваться, привыкал к нему, а он что, взял и кинул, или мне админу его софтину по по юзерам раскидай, их обучи, а он возьми да и забей...
> Ну почему же только ему, мне как юзеру тоже важно, я как
> ни как учился его софтом пользоваться, привыкал к нему, а он
> что, взял и кинул, или мне админу его софтину по по
> юзерам раскидай, их обучи, а он возьми да и забей...Потому что если это тебе важно, ты займешься развитием софта (причем не обязательно участием в написании кода), но тогда ты сам будешь разработчик. А если ты развитием не можешь или не хочешь заняться, то значит тебя это все и так устраивает и ты пар выпускаешь.
Переводом справки?)) и условие разрабам ставить?)) да-да, они послушают.Развитием, дажем третьей части, того чем пользуюсь заниматься не реально. А клоню к необходимости жесткой стандартизации, и формирования базисов.
В свое время протокол TCP/IP был принят стандартом не сразу, но без долгих раздумий, и сколько лет уже им пользуются и менять не торопятся, но чем выше ровень, тем среднестатистическая продолжительность жизни проекта меньше. Это правильно что ли?
> Переводом справки?)) и условие разрабам ставить?)) да-да, они послушают.А еще можно поучаствовать в оплате разрабских трудодней.
> Развитием, дажем третьей части, того чем пользуюсь заниматься не реально. А клоню
> к необходимости жесткой стандартизации, и формирования базисов.Поучаствовать в финансировании разработки нужного лично тебе большого ума и опыта не нужно.
> В свое время протокол TCP/IP был принят стандартом не сразу, но без
> долгих раздумий, и сколько лет уже им пользуются и менять не
> торопятся, но чем выше ровень, тем среднестатистическая продолжительность жизни проекта
> меньше. Это правильно что ли?В те времена было проще принимать судьбоносные решения, решающих было меньше. А сейчас думают количество перейдет в качество, только коммунизма все так же нет :)
> В те времена было проще принимать судьбоносные решения, решающих было меньше. А сейчас думают количество перейдет в качество, только коммунизма все так же нет :)Да причем тут... Задолбали просто всякие со своими аймудами, и медведы которые их пиарят, и внедряют инновационые технологии, и переводят все и вся в цифру, а по факту имеем сайты не работающие ни с чем кроме ие, либо с голым html и
<br> как единственным средством разметки.
>> В те времена было проще принимать судьбоносные решения, решающих было меньше. А сейчас думают количество перейдет в качество, только коммунизма все так же нет :)
> Да причем тут... Задолбали просто всякие со своими аймудами, и медведы которые
> их пиарят, и внедряют инновационые технологии, и переводят все и вся
> в цифру, а по факту имеем сайты не работающие ни с
> чем кроме ие, либо с голым html и
>как единственным средством разметки.
Как раз при том самом. Сейчас могут в стандарт принять фигню, так как каждый подумает, что правильное решение и без него примут, а ему с нужными людьми отношения не стоит портить. Когда ответственных много наступает полная безответственность.
То есть надо кого-то послать в самой грубой форме...кого? )))
> То есть надо кого-то послать в самой грубой форме...кого? )))Если у вас только вопрос возникает, то боюсь пошлют вас... дяди по стандартам с ойпадлами.
не прикапывайся к студентам! :) у них еще всё впереди
только конструктивная критика!
> только конструктивная критика!конструктивный патч показал.
>[оверквотинг удален]
> @@ -314,7 +314,7 @@
> char *worklist = NULL;
> char *whitelist = NULL;
> - int threads = 1;
> + long int threads = 1;
> std::list<std::string> models;
> std::string main_model = "x86";
> /* Default is dead/undead analysis */
>
этот threads задаёт количество процессов, на которые надо распараллелить анализ ядра.
Если кто-то задаст значение, которое приведёт к переполнению, это уже само по себе некорректно.
Вполне нормальный кусок кода/
>[оверквотинг удален]
>> char *worklist = NULL;
>> char *whitelist = NULL;
>> - int threads = 1;
>> + long int threads = 1;
>> std::list<std::string> models;
>> std::string main_model = "x86";
>> /* Default is dead/undead analysis */
>>
>> И ЭТИ ЛЮДИ ЗАНИМАЮТСЯ АНАЛИЗОМ КАЧЕСТВА КОДА ЯДРА ..... :)
> этот threads задаёт количество процессов, на которые надо распараллелить анализ ядра.Пох...ю что он задаёт.
> Если кто-то задаст значение, которое приведёт к переполнению, это уже само по
Понятия "кто-то" в Си нету. Кода статистического анализа и расчёта вероятности не вижу.
> себе некорректно. Вполне нормальный кусок кода/
Функция возвращает long, значит присваиваться этот результат должен переменной
такого же типа, и нипёт, что "когда-то никогда что-то как-то" не случиться.Надо было юзать atoi()
Нет, это очередная ошибка, излишний пуризм. Данная переменная будет иметь значения от единицы (умолчательное значение) до нескольких десятков, проверка на ошибочную работу strtol - имеется, проверка на значение переменной - тоже имеется. Вывод - если кто-то задал количество процессов в 24145123525523323242342343422 - тот сам себе злобный буратино.
Займись чем-нибудь полезным?
> - если кто-то задал количество процессов вПрограммы делаются в помощь людям, а не для развития геморроя.
Сценарий геморроя в данном конкретном случае?
Предусмотрен опциональный параметр: количество параллельно работающих потоков, аналог make -jN; параметр читается, значение параметра после этого проверяется, есть умолчательное значение - 1.
Какой геморрой?
Даже не знаю как вам объяснить, зачем у самолётов запас прочности превышает
все возможные перегрузки в 2.5 раза, за идиота примите.
> Даже не знаю как вам объяснить, зачем у самолётов запас прочности превышает
> все возможные перегрузки в 2.5 раза, за идиота примите.код, который вы пытаетесь "исправить", корректно поддерживает задание максимум 2147483647 процессов, реально же будут испольвано максимум 20 процессов в случае обычной пользовательской системы, и, видимо, 32 000 процессов в случае использования 32000-ядерной системы. Запас прочности составляет от 100 миллионов до 100 тысяч раз.
Принимаю.
Вы случаем в разработке PHP не участвуете?
жги. Сразу два варианта остри - вариант на "да, я принимаю участие" и вариант "нет, не принимаю".почитаю, может и посмеюсь.
> Нет, это очередная ошибка, излишний пуризм. Данная переменная будет иметь значения
> от единицы (умолчательное значение) до нескольких десятков, проверка на ошибочную работуСоль в том, что этот проект как раз посвящен проверке качества и пуризма. А получается сапожник без сапог, хочется сказать авторам, "Врачу, исцелися сам".