- @avagin:#include <stdio.h>
#define ODEBUG_CHUNK_SHIFT 12
#define ODEBUG_CHUNK_SIZE (1 << ODEBUG_CHUNK_SHIFT)
#define ODEBUG_CHUNK_MASK (~(ODEBUG_CHUNK_SIZE — 1))
int main()
{
printf("%x %lx\n", ODEBUG_CHUNK_MASK, 0xffffffffffffffff & ODEBUG_CHUNK_MASK);
}
Что выдаст этот код? - @avagin: *linuxВ линуксе есть подсистема событий. По сути это буфер, куда сваливаются события заранее описанные в коде. Не так давно в голову пришла мысль, как было бы хорошо, если на упсе можно было бы посмотреть этот буфер. Оказывается все уже сделано echo 1 > /proc/sys/kernel/ftrace_dump_on_oop. Теперь упс это не просто стек трей, где все навернулось, но еще и кусочек истории.1 month ago
- @avagin: *criu *linuxТолько в нашем проекте criu.org может быть анонимная память, без анонимных мапингов. Вам слабо?2 months ago; 10 replies
- @avagin: *parallelsТут вошел Стив Джобс: «Привет, меня зовут Стив Джобс. Как дела?» Сел на тумбочку. Мы стали заново объяснять, чего хотим. Он долго слушал нас не перебивая, задал несколько уточняющих вопросов по существу. Потом сказал: «Я думаю, нам надо это сделать». Встал и вышел. После этого с нами разговаривали уже совсем по-другому – предельно четко и по делу.
macosworld.ru2 months ago - @avagin: *managementДавайте представим себе систему координат. По оси X ваш профессиональный уровень, по оси Y ваше умение управлять. Тут начинается самое главное, если вы просто работаете как специалист то вы движетесь по оси X, а вот если вы стали менеджером, то вы движетесь по окружности, радиус которой равен вашему максимальному профессиональному уровню. Когда вы работаете специалистом, то ваш скил менеджера практически не растет, а вот когда вы работаете менеджером то он еще и падает. Вторая особенность не менее важная, то что предел менеджера зависит от того на сколько хорошим специалистом он был. Согласно этой идеи, оптимальное развитие будет тогда, когда вы к концу карьеры достигните оси Y в максимальной для вас точке.
Да, это не идеальная схема, но она качественно показывает ситуацию.3 months ago - @avagin: *linux *spliceЧто выведет следующая программа и почему?
ps: Обработку ошибок убрал, чтоб не загромождать код. Вызовы тут никакие фейлиться не должны.
#define _GNU_SOURCE
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd, p[2];
char buf[4096];
off_t o = 0, i;
fd = open("/tmp/pipe.test", O_RDWR | O_CREAT, 0666);
unlink("/tmp/pipe.test");
pipe(p);
write(fd, "Hi\n", 3);
for (i = 0;; i++) {
lseek(fd, 0, SEEK_SET);
if (splice(fd, NULL, p[1], NULL, 3, SPLICE_F_NONBLOCK) < 0)
break;
}
printf("%d\n", i);
lseek(fd, 0, SEEK_SET);
write(fd, "hI\n", 4);
read(p[0], buf, i * 3);
buf[i * 3] = '\0';
printf("%s\n", buf);
return 0;
} - @avagin: *opensourceЯ запостил бажок Шляпникам, указал как воспроизвести, какими патчами сломали, приложил логи. В нашем ядре я его подпер и проверил. Через месяц они проснулись и выкатили мне ядро с просьбой проверить, баге поставил статус NEEDINFO. Вопрос должен ли я из идейных соображений его потестить. Из не идейных я этого делать не хочу.
- @avagin: *criu *linuxХа-ха. Про нас Торвальдс написал:
Author: Linus Torvalds <torvalds@linux-foundation.org>
Merge branch 'akpm' (aka "Andrew's patch-bomb, take two")
....
— checkpoint/restart feature work.
A note on this: this is a project by various mad Russians to perform
c/r mainly from userspace, with various oddball helper code added
into the kernel where the need is demonstrated.4 months ago
