Автор Тема: Не само разработчиците на Линукс ядрото са идиоти  (Прочетена 4658 пъти)

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Всеки който е разглеждал кода на разни драйвери в ядрото знае, че качеството им не е кой знае колко добро (меко казано). Въпреки, че пиша предимно за Линукс, когато трябва да портвам драйвер за друга операционна система, обикновено използвам някой от *BSD драйверите (ако има такъв) и само сверявам с кода от Линукс драйверите. Та, израза че Линукс разработчиците са идиоти си е частна шега между хората с които работим заедно.

Това е имейла, който изпратих вчера до някои от тях (преведен на български):

От atheros драйвера в OpenBSDs, sys/dev/ic/ar5xxx.h:

Примерен код

   #define AR5K_REG_WAIT(i) \
       if (i % 64) \
           AR5K_DELAY(1);


Макросът се използва в цикли, които записват стойности в регистри, нещо като:

Примерен код

   for(i = 0; i < len; i++) {
       AR5K_REG_WRITE(reg, val);
       AR5K_REG_WAIT(i);
   }


Възможностите са две:

1. Разработчиците на OpenBSD са идиоти защото си правят труда да "икономисат" една микросекунда за всеки 64 записа/микросекунди.

2. Разработчиците на OpenBSD са идиоти защото не знаят как да използват оператора %. (т.е. искат да направят пауза от 1 микросекунда на всеки 64 записа, но са оплескали условието в if-a).

Коя от двете възможности избирате? '<img'>

П.П. Предимствата на отворения софтуер се виждат ясно в този случай -- драйверът за Линукс има същия бъг '<img'>
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Вероятно целта им е била веднъж на 64 пъти да не правят пауза '<img'>
Активен

"Knowledge is power" - France is Bacon

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Това автоматично ги прави идиоти, вж. 1 '<img'>
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Е глей ся не знам какво прави AR5K_DELAY(1), затова просто предполагам. Може и да прави нещо друго, освен да дреме '<img'>
Активен

"Knowledge is power" - France is Bacon

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Прави една микросекунда пауза.
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Хм, сигурно Тео the Rat има пръст в тази работа '<img'> Ма човек не е добре да се рови из изпражнения на гризачи, може да прихване некой бацил '<img'>
Активен

"Knowledge is power" - France is Bacon

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Основната причина да пусна коментара е, че пример много добре показва, че предимството "много очи, малко бъгове" не работи, очите първо трябва да могат да виждат.

Обзалагам се, че и след 1 година този бъг все още ще си е там (защото аз нямам намерение да съобщавам за него).
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Ами добре, само че аз не вярвам, че ако очите са по-малко и има една пасмина слабоумни QAs с големи претенции и заплати, нещата ще са по-добре. Мисля, че една друга операционна система го доказва достатъчно нагледно '<img'>

Апропо, OBSD хората имат претенции че пишат перфектен код от едва ли не академично-доказани разработчици и тем подобни глупости, имат си едни хак-а-тони, на които пишат и дебъгват. Отделно дето Тео е един абсолютен трол, който постоянно плюе по линукс community-то. А съм сигурен, че този драйвер е порт-нат от обсд. Така че не знам..
Активен

"Knowledge is power" - France is Bacon

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Като стана дума за една друга операционна система, ето какво видях днес:

Optimization, the Microsoft way

This was found in the 2004 leaked Windows sources

__inline BOOL
SearchOneDirectory(
                  IN  LPSTR Directory,
                  IN  LPSTR FileToFind,
                  IN  LPSTR SourceFullName,
                  IN  LPSTR SourceFilePart,
                  OUT PBOOL FoundInTree
                  )
{
    //
    // This was way too slow. Just say we didn't find the file.
    //
    *FoundInTree = FALSE;
    return(TRUE);
}
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Знаех си, че ако стана някога програмист, моят бъдещ работодател ще е Майкрософт '<img'>
Активен

"Knowledge is power" - France is Bacon

Nikolavp

  • Напреднали
  • *****
  • Публикации: 408
    • Профил
    • WWW
Определено мисля, че това е бъг и са искали да постигнат второто, но не са съобразили, че трябва да има един ! преди израза '<img'>. Между другото каква може да бъде причината да заспи на всеки 64 минавания през цикъл(ако за това се ползва) ?'<img'>
П.С. Тва с функцията от прозореца май е шега '<img'>



Активен

http://blog-nikolavp.rhcloud.com - простотиите, с които се занимавам в свободното време

Lord Bad

  • Напреднали
  • *****
  • Публикации: 1667
  • Distribution: Fedora 13
  • Window Manager: GNOME
  • Jedi Knight
    • Профил
Обикновено драйверите ги пишат хардуерни инженери, които нямат кой знае какъв опит в програмирането и затова се получава така. И аз сега работя по едно драйверче и като гледам в кода на разни подобни драйвери има и там разни неразчетени изпълнения. Но нещата винаги се компенсират - аз като видя някоя по сложна принципна схема или pcb почти нищо не мога да вдяна от тях. Никой не може да знае всичко.
Активен

Fuelled by Fedora 13 "Goddard"
====================================
Rock it!

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Специално atheros драйвера не е писан от хардуеристи, а е reverse engineered от някой.
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Абе сега се присетих...имаше някакви големи драми свързани с този драйвер навремето на LKML доколкото имам спомени...ама нещо ми се губят нещата. Нещо сходно с драйверите на АТИ беше, фирменият драйвер беше някакъв "blob" май и някакви такива работи, техни политически там.

Честно казано слабо ме интересуват такива неща де. Нямам много против драйвери, които не са с отворен код. Стига да работят и да има подръжка като хората, а не като си сменя ядрото да нямам начин да си подкарам джаджата..
Активен

"Knowledge is power" - France is Bacon

edmon

  • Гост
хах сигурно искат да чака .. щото като правиш записи може и да е проблем... ама явно и така си работи '<img'> хахахахахахахах
а иначе що му фащаш край си длъжен да им кажеш че има бъг'<img'>
по мое скромноо мнение де!'<img'>
Активен