LINUX.ORG.RU

Ем ай кул???


0

0

Вот написал свой сискол - получает массив с пид-ами и проверяет, является ли елемент i данного массива ребёнком елемента i-1.

И собственно вопрос напрашивается сам по себе - могу ли я считать себя Ъ?

ЗюЫю Гадателям по капче: на что намекает airffen?

>>> Просмотр (1280x1024, 168 Kb)

anonymous

Проверено: Shaman007 ()

Интересные массивы ты обрабатываешь...

pento ★★★★★
()

Может кто-нибудь знает как отключить
уголки вверху окон в wmii? Спасибо.. 

anonymous
()

Скрин неплохой, хотя вимператор там сверху не вписывается. По поводу wmii, у тебя там стоит шрифт в заголовках misc-fixed в 10646 и русские буквы берутся из какого-то другого шрифта, так вот если этот шрифт воткнуть в териминал, скажем urxvt, то русские буквы будут верно браться из того же шрифта, только koi8r, и выглядеть это будет нормально, а не так как здесь. Внимание вопрос, есть идеи как заставить wmii заменять отсутствующие в шрифте русские буквы из misc-fixed koi8r а не откуда он их там берет?

frd ★★
()
Ответ на: комментарий от anonymous

$ cat /proc/version

Linux version 2.6.25-2-686 (Debian 2.6.25-3) (maks@debian.org) (gcc version 4.1.3 20080420 (prerelease) (Debian 4.1.2-22)) #1 SMP Wed May 14 16:42:03 UTC 2008

anonymous
()
Ответ на: комментарий от frd

> По поводу wmii, у тебя там стоит шрифт в заголовках misc-fixed в 10646 и русские буквы берутся из какого-то другого шрифта, так вот если этот шрифт воткнуть в териминал, скажем urxvt, то русские буквы будут верно браться из того же шрифта, только koi8r, и выглядеть это будет нормально, а не так как здесь.

Я шрифты не осилил))) Хотя теперь понял, почему в urxvt он кириллицу нормально показывает, а в самом wmii не хочет на отказ... Спасибо! Если решение будет найдено, поделись с народом.

Кстати, что-то никто не высказался по поводу качества кода)))

anonymous
()
Ответ на: комментарий от xTERM

> шрифты

monospace

> тема в Виме

desert

терминал - urxvt

цвета взяты из темы tango гномовского терминала.

background тут в галерее у кого-то приметил, да себе взял - #2e3436

anonymous
()

>на что намекает airffen?

а на что намекает "пид-ами" О_О

ubuNToo
()

No. You not. Some fonts may blow up your and our eyes.

//FIX MY ENG...

FiXer ★★☆☆☆
()

Зачем asmlinkage? В чём его полезность?

wils0n
()
Ответ на: комментарий от anonymous

>Я один прочел "я ем акул???" ?

Нет, я тоже голоден.

anonymous
()

Мля, походу там _шансон_ 8( !!!

Burbaka ★★
()
Ответ на: комментарий от anonymous

> Я шрифты не осилил))) Хотя теперь понял, почему в urxvt он кириллицу нормально показывает, а в самом wmii не хочет на отказ... Спасибо! Если решение будет найдено, поделись с народом.

http://www.gentoo.ru/?q=node/2185

Komintern ★★★★★
()
Ответ на: комментарий от anonymous

Syscalls-таки да, Ъ, - однозначно;

Насчёт ошибки: до вечера не колись (ну, типа, я уже нашёл...)

Да, и есть акул летом - полезно

anonymous
()

> ЗюЫю Гадателям по капче: на что намекает airffen?

зЮыЮ намёк на вылет сборной Германии в финале от

anonymous
()

Предположим, kmalloc выделила память нормально, а copy_from_user рванула. Память утечет.

ierton ★★
()

Надо использовать стиль типа

int ok = 0;
if(!malloc(m1))
goto OOPS1;
if(!malloc(m2))
goto OOPS2;

ok = 1;
free(m2);
OOPS2:
free(m1);
OOPS1:

return ok ? GOOD_BOY : -FUCK_OFF;

удачи...

ierton ★★
()

leak на leak'e и leak'ом поганяет

lester ★★★★
()

Нафига попу баян?

Собственно, subj. А кроме того:

А tasklist_lock точно не надо замыкать/отмыкать?
А память освобождать?

Хреновый получился системный вызов.

Dselect ★★★
()
Ответ на: комментарий от redgremlin

Ем кильку.

> Оценивать по паре строчек элементарного кода?

Если ошибок столько, сколько здесь, то вполне можно.

Dselect ★★★
()
Ответ на: комментарий от anonymous

Кулинарное

> Да, и есть акул летом - полезно

Может и полезно, но как-то не по-пацански. Вот кашалотов, или там синих
китов -- это другое дело!

Dselect ★★★
()
Ответ на: комментарий от anonymous

>Кстати, что-то никто не высказался по поводу качества кода)))

Комменты это хорошо, но ошибки это плохо. Пиши более просто - будешь делать меньше ошибок.

vtVitus ★★★★★
()
Ответ на: комментарий от lester

Leak'и сплошные. Зато лики с коментариями.

anonymous
()

Вот версия поновее... Поругайте ещё! Критика никогда не помешает. ;)

http://img2.freeimagehosting.net/image.php?9ea74d0604.png

http://www.imagecross.com/image-hosting-view-15.php?id=48122008-06-27-002811_...

http://img98.imageshack.us/my.php?image=200806270028111280x1024ru3.png

Это всё тот же скрин, но на разных хостингах.

...на всякий случай. ))

// автор.

Медведев соврал, в воскресение мы за Россию поболеть уже не сможем, но с такой игрой оно и к лучшему... ((((

anonymous
()
Ответ на: комментарий от alphex_kaanoken

Не хорошо так разговаривать с одним из старейших посетителей этого сайта... Если вы не поленитесь прочитать статистику в моем профиле, то заметите, что даже id у меня 2... а не 11188.

anonymous
()

За шансон убейся об стену. А за Кучина 2 раза.

anonymous
()

ну кто так оформляет код, глаза поломать можно

п.с. за шансон( я по именам не знаю - но добрые люди подсказали :) ) огромный минус

lester ★★★★
()

/* идея 1 - не фонтан */
asmlinkage int sys_checkpath (int *array, int size) {
    struct task_struct *task;
    int *karray = NULL;
    int retval;
    
    if ( array == NULL || size <= 0 )
        retval = -EINVAL;
    else if ( NULL == (karray = kmalloc(sizeof(int)*size, GFP_KERNEL)) )
        retval = -ENOSPC;
    else if ( copy_from_user(karray, array, sizeof(int)*size) )
        retval = -EINVAL;
    else if ( NULL == (task = find_task_by_pid(karray[--size])) )
        retval = __PATH_NOT_CORRECT;
    else {
        while ( (--size >= 0)
            && (NULL != (task = task->p_opptr))
            && (karray[size] == task-> pid) )
            ;
        retval = (size >= 0)? __PATH_NOT_CORRECT : __PATH_CORRECT;
    }
    if (NULL != karray) kfree(karray);
    return retval;
}

/* идея 2 - 'goto' тоже как-то не очень */
asmlinkage int sys_checkpath (int *array, int size) {
    struct task_struct *task;
    int *karray;
    int retval;
    
    if ( array == NULL || size <= 0 ) {
        retval = -EINVAL;
        goto quit;
    }
    if ( NULL == (karray = kmalloc(sizeof(int)*size, GFP_KERNEL)) ) {
        retval = -ENOSPC;
        goto quit;
    }
    if ( copy_from_user(karray, array, sizeof(int)*size) ) {
        retval = -EINVAL;
        goto free_mem_quit;
    }
    if ( NULL == (task = find_task_by_pid(karray[--size])) ) {
        retval = __PATH_NOT_CORRECT;
        goto free_mem_quit;
    }
    
    while ( (--size >= 0)
        && (NULL != (task = task->p_opptr))
        && (karray[size] == task-> pid) )
        ;
    retval = (size >= 0)? __PATH_NOT_CORRECT : __PATH_CORRECT;

free_mem_quit:
    if (NULL != karray) kfree(karray);
quit:    
    return retval;
}

/* идея 3 - много 'return' - в больших функциях чревато */
asmlinkage int sys_checkpath (int *array, int size) {
    struct task_struct *task;
    int *karray;
    
    if ( array == NULL || size <= 0 ) {
        return -EINVAL;
    }
    if ( NULL == (karray = kmalloc(sizeof(int)*size, GFP_KERNEL)) ) {
        return -ENOSPC;
    }
    if ( copy_from_user(karray, array, sizeof(int)*size) ) {
        kfree(karray);
        return -EINVAL;
    }
    if ( NULL == (task = find_task_by_pid(karray[--size])) ) {
        kfree(karray);
        return __PATH_NOT_CORRECT;
    }
    
    while ( (--size >= 0)
        && (NULL != (task = task->p_opptr))
        && (karray[size] == task-> pid) )
        ;
    return (size >= 0)? __PATH_NOT_CORRECT : __PATH_CORRECT;
}

/* в ообщем - хреново всё */
/* ваш вариант? */

anonymous
()
Ответ на: комментарий от FENix

> ничего так, симпатично. Какой шрифт в консоли?

$ cat .Xdefaults | grep font

URxvt.font: xft:monospace:pixelsize=14

anonymous
()
Ответ на: комментарий от lester

Опять заговоры... Даже на лоре никакой анонимности... (((

anonymous
()
Ответ на: комментарий от anonymous

Отрубивши голову, по волосам не плачут.

Эх, goto -- не goto... 

>        while ( (--size >= 0)
>            && (NULL != (task = task->p_opptr))
>            && (karray[size] == task-> pid) )
>            ;

Вы лучше вот о чем подумайте. Где гарантия, что пока цикл выполняется,
этот самый task не завершится?

CPU0                            CPU1
[task #X]                       [task #N]
sys_checkpath()                 blah
...                             ...
task = find_task_by_pid(N)      sys_exit(0)

task = task->p_opptr
/* Oops! */

Может, таки надо какой-то lock брать? 

Dselect ★★★
()
Ответ на: Отрубивши голову, по волосам не плачут. от Dselect

Намек понял, но о таких вещах пока думать не надо. На самом деле я студент, беру курс "Операционные системы", а это домашка первая... Синхронизацию мы только недавно на лекциях затронули)))

anonymous
()
Ответ на: комментарий от anonymous

> ты серьезно слушаешь такую музыку?

Да.

// автор

ЗЫ На вкус и цвет, как говорится...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.