Задать вопрос
  • Как с помощью консольной команды удалить старые файлы?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Примерно так (для файлов):
    find -type f -atime +30 -delete

    Чтобы это работало файловая система должна поддерживать atime.
    Ответ написан
    Комментировать
  • Почему сопроцессор в тысячу раз медленнее процессора?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Кто подскажет, что я делаю не так?


    Это:
    clock_t strt = clock();
    ...
    clock_t bk1 = clock() - strt;
    ...
    clock_t bk2 = clock() - bk1;

    bk1 -- это разность абсолютных времён, т.е. продолжительность, а bk2 -- это разность абсолютного времени и продолжительности, т.е. абсолютное время.

    Ок, после исправления этого бага я вижу проблему с переполнением стека сопроцессора: fadd не сдвигает стек обратно и fld его очень быстро переполняет.

    С переполнением стека я тоже наблюдаю, что fpu работает ~ в 1000 раз медленнее чем ALU. Но если сбалансировать загрузки, операции и выгрузки так, чтобы стек не переполнялся у меня все работает со сравнимой скоростью. Подозреваю, что там случается исключение, но оно не фатальное и молча глотается ядром.

    Я тестировал следующий код (выкинул вообще всё лишнее):
    #include <stdio.h>
    #include <inttypes.h>
    #include <time.h>
    
    #define MAX_I 4000000
    
    int32_t rezult[64];
    
    void StartPR(int str)
    {
            asm volatile ("mov $4000000, %%eax\n\t"
                          "xor %%ebx, %%ebx\n\t"
                          "xor %%ecx, %%ecx\n\t"
                          "xor %%edx, %%edx\n"
    
                          "circle:\n\t"
                          "add %%eax, %%ebx\n\t"
                          "add %%eax, %%ecx\n\t"
                          "add %%eax, %%edx\n\t"
                          "dec %%eax\n\t"
                          "jnz circle\n\t" ::: "memory");
    }
    
    void StartMMX(int str)
    {
            double v = 4000000;
            asm volatile ("mov $4000000, %%eax\n\t"
                          "fldz\n\t"
    
                          "circle2:\n\t"
                          "fld %0\n\t"
                          "faddp \n\t"
                          "fld %0\n\t"
                          "faddp \n\t"
                          "fld %0\n\t"
                          "faddp \n\t"
                          "fld %0\n\t"
                          "faddp \n\t"
                          "sub $4, %%eax\n\t"
                          "jnz circle2\n\t"
                          "fstp %0" :"+m"(v):: "memory");
    }
    
    void stardThreads(int numOfThread)
    {
            printf("threads: %i", numOfThread);
            int i = 0;
            clock_t strt = clock();
            StartPR(0);
    
            clock_t strt2 = clock();
            clock_t bk1 = strt2 - strt;
    
            StartMMX(i);
            clock_t bk2 = clock() - strt2;
            printf("time block1:%i, block2:%i, tics per second:%i\n", (int32_t)bk1, (int32_t)bk2, CLOCKS_PER_SEC);
    }
    
    int main(int argc, char *argv[])
    {
            int i;
            for (i = 1; i < 9; i++)
                    stardThreads(i);
    
            return 0;
    }


    Результат:
    threads: 1time block1:6949, block2:9311, tics per second:1000000
    threads: 2time block1:4061, block2:7872, tics per second:1000000
    threads: 3time block1:3901, block2:7398, tics per second:1000000
    threads: 4time block1:3615, block2:7045, tics per second:1000000
    threads: 5time block1:3389, block2:6716, tics per second:1000000
    threads: 6time block1:3250, block2:6342, tics per second:1000000
    threads: 7time block1:3189, block2:6036, tics per second:1000000
    threads: 8time block1:3032, block2:5885, tics per second:1000000
    Ответ написан
    4 комментария
  • Как правильно словить core dump?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    1) будет ли это - ulimit -c unlimited активно для следующей сессии, и будет ли вообще работать ?

    Нет. Чтобы настроить ulimit по умолчанию -- см. man limits.conf

    2) где мне потом искать этот core. файл

    Зависит от /proc/sys/kernel/core_pattern, для вашего примера -- в текущем каталоге упавшего процесса. Вообще core_pattern -- это просто путь до файла с возможностью подстановки некоторых параметров процесса через %*.
    См. man core.
    Ответ написан
    Комментировать
  • Как вывести формулу из дизассемблерного кода?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как вывести формулу из дизассемблерного кода

    Выписав выражения элементарных математических действий соответствующих ассемблерным командам и подставив выражения друг в друга, согласно тому, как использованы регистры и переменные в памяти.
    Например:
    mov 0x10(%ebp),%edx
    -- это "поместить в edx третий параметр функции (назовём их a (0x8(%ebp)), b (0xc(%ebp)) и c (0x10(%ebp))): edx = c"

    mov %edx,%eax
    -- "поместить в eax edx, который равен c, т.е. eax = c"

    shl $0x2,%eax
    -- сдвинуть eax на 2 влево, т.е. умножить на 4, т.е. eax = c * 4

    и т. д.

    Результат -- то что останется в eax перед возвратом.
    Ответ написан
    Комментировать
  • Скрипт (или программа) для сравнения данных в двух каталогах?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Бескостыльный метод сравнить содержимое двух каталогов -- выполнить
    find -type f -print0 | xargs -0 sha1sum | sort > result
    в этих каталогах, а потом сравнить файлы result, например командой diff.
    Ответ написан
    Комментировать
  • Системные вызовы в Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Вы уверены, что понимаете, что такое "системный вызов", и чем он отличается от вызова функции system?
    Ответ написан
    6 комментариев
  • Чем ASEM51 отличается от A51?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    чем кросс-ассемблер отличается от макроассемблера?

    Макроассемблер -- это ассемблер поддерживающий макросы.
    Кросс-ассемблер -- это ассемблер, генерирующий код для процессора, архитектура которого отлична от той, на которой он сам выполняется.
    Макроассемблер может быть кросс-ассемблером.
    Ответ написан
    Комментировать
  • Странно работает rand(). В чем проблема?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    С помощью неё я формирую массив,

    Т.е. вызываешь её в цикле, т.е. вызываешь srand(static_cast(time(0))); много раз за короткое время. Продолжать?
    Вопрос: зачем ты это делаешь внутри этой функции?
    Ответ написан
    Комментировать
  • Как работает bridge на уровне ядра?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Кто может продолжить цепочку: реальное устройство eth0 инициирует прерывание -> процессор смотрит в таблице прерываний откуда брать код драйвера, а что дальше

    Слишком глубоко копнул: если тебя интересует именно бриджевание, то зачем разбираться в том, как драйвер сетевухи взаимодействует с ядром, если код бриджевания в линуксе не зависит от того, как сетевой пакет попал в систему.

    Очень грубо: если сетевой пакет получен с одного из интерфейсов-слейвов бриджа -- посмотреть, есть ли для его адреса назначения запись в forwarding database, если есть -- переслать пакет в интерфейс из этой записи, если нет -- переслать во все интерфейсы этого бриджа, кроме того, через который пакет был получен.

    Если хочется подробностей, можно почитать тут: it-ebooks.info/book/2195
    Или тут: https://git.kernel.org/cgit/linux/kernel/git/torva... , там всего пара интересных файлов, по 500 строчек каждый.
    Ответ написан
    1 комментарий
  • Что делать, если screen не реагирует на ввод?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Спасает только принудительный (и крайне нежелательный) перезапуск сессии.

    Можно убить одно зависшее окошко командой ^a-K

    Есть ли другое решение?

    Разобраться почему виснет. Типичная причина -- случайное нажатие ^s или ^a-s. Лечится нажатием ^q или ^a-q.
    Ответ написан
    Комментировать
  • На каком форуме задавать вопросы касательно: Android, JNI, NativeActivity, отладка JNI lib без исходников, их реверс-инжиниринг, - почти что хакинг?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    есть JNI-библиотека вида lib.so. NativeActivity.
    ...
    я не умею дизассемблировать библиотеки такие.

    Берёшь objdump из тулчейна которым собрана либа и выполняешь objdump -xd lib.so.NativeActivity.
    Задавай уточняющие вопросы: непонятно, с чем именно у тебя сложности.
    Ответ написан
    9 комментариев
  • Как узнать разрядность ubuntu?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    какая разрядность была установлена

    Разрядность ядра -- grep CONFIG_64BIT /boot/config*
    Разрядность юзерспейса -- по наличию /lib64
    Ответ написан
    Комментировать
  • Подключение к нескольким серверам OpenVPN, не работают сетевые туннели (tun1,tun2), кроме tun0, в чем проблема?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet addr:10.200.1.153 P-t-P:10.200.1.153 Mask:255.255.252.0

    tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet addr:10.200.1.204 P-t-P:10.200.1.204 Mask:255.255.252.0

    Оба интерфейса в одной подсети.
    Ответ написан
  • Как в KVM или QEMU запустить не сжатое ядро системы?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    для иследовательских целей хотелось бы запустить не сжатое ядро системы, кто может что подсказать

    А почему вы думаете, что это вообще возможно? vmlinux должен быть рассчитан на прямую загрузку и это действительно поддерживается для некоторых конфигураций некоторых архитектур. Но не для всех.
    И, да -- что вы ожидаете от загрузки несжатого ядра, чего вам не даст загрузка сжатого?
    Ответ написан
    6 комментариев
  • Возможно ли применить такое условие?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    if (arr[0] == arr[1] == arr[2])

    Результат выполнения операции == в С++ -- это bool, а bool конвертируется в int.
    Запись в скобках эквивалентна (a[0] == a[1]) == a[2] и сравнивает a[2] с результатом сравнения a[0] и a[1] (0 если они не равны, 1 если равны). Т.е. 1 == 1 == 1 -- это истина, поскольку (1 == 1) -- истина, истина сконвертированная в int -- это 1, а 1 == 1 -- это истина.

    почему сравнение значений массива по индексу работает не так, как с обычными переменными

    Точно так же оно работает.

    как мне добиться нужного результата?

    if (arr[0] == arr[1] && arr[1] == arr[2])
    Ответ написан
    Комментировать
  • Сборка монолитного ядра? Как же оно работает?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    мне нужно собрать довольно специфическое тонкое и главное монолитное ядро

    Хорошо было бы, если бы вы объяснили зачем.

    как я понял чтобы сделать его монолитным надо убрать галочку(или даже все пункты) в меню "Enable loadable module support" так ли это?

    Чтобы сделать его монолитным достаточно вкомпилировать все нужные опции в ядро.

    почему оно все еще некоторые вещи в меню разрешает ставить как [M]?

    Пока "Enable loadable module support"=y можно поставить M в пунктах поддерживающих модульность.

    верно ли что молонитное ядро не может включать себя новые устройства, драйвера которых не были предопределены при сборке ядра ???

    Ядро без поддержки модулей не может.
    Ответ написан
    Комментировать
  • Можно ли узнать из функции указатель на переменную, куда она возвращает значение, без явного указания его в параметрах О_о?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Можно ли узнать из функции указатель на переменную, куда она возвращает значение

    В общем случае -- нет. Если возвращаемое значение -- примитивный тип или маленькая структура (влезающая в 1 - 2 регистра, в зависимости от ABI), то это значение возвращается в регистре/регистрах и может вообще нигде не записываться в память. Если возвращается большая структура, то адрес, по которому она должна быть записана, передаётся в функцию как дополнительный скрытый параметр.
    Ответ написан
    3 комментария
  • Глобальная переменная имеет разные адреса в разных потоках, почему?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    глобальная переменная имеет разный адрес в разных потоках

    Просто глобальная, если она не TLS -- вряд ли. Строчку с определением переменной покажите.
    Ответ написан
    Комментировать
  • Ссылки на функции?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    почему примеров его использования нигде не заметно, удобнее ведь вместо константного указателя.

    Чем удобнее-то? Ссылку нужно инициализировать в момент создания и нельзя изменить потом. Функцию в C++ нельзя создать или вернуть из функции, зачем ссылка?
    Ответ написан
    3 комментария
  • Не стартует cron на FreeBSD 10.1. Что делать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    А если запустить с отладочной информацией но без отладчика -- падает?
    В этой вашей BSD есть core-дампы? Если есть -- пусть сгенерирует, загрузите его в gdb и посмотрите.
    Ответ написан
    6 комментариев