Как проверить, истек ли срок службы struct timer_list?

s = r'abc123d, hello 3.1415926, this is my book'
print re.findall(r'-?[0-9]+(?:\.[0-9]*)?|-?\.[0-9]+',s)

Вам не нужно escape дважды, когда вы используете raw mode.

Выход: ['123', '3.1415926']

Также тип возврата будет списком strings .Если вы хотите, чтобы возвращаемый тип, как integers и floats, использовал map

import re,ast
s = r'abc123d, hello 3.1415926, this is my book'
print map(ast.literal_eval,re.findall(r'-?[0-9]+(?:\.[0-9]*)?|-?\.[0-9]+',s))

Выход: [123, 3.1415926]

0
задан user7718036 13 July 2018 в 22:47
поделиться

1 ответ

Предупреждение. Этот вопрос относится к старым интерфейсам API таймера ядра ядра Linux. Интерфейс таймера изменился с момента фиксации:

commit e99e88a9d2b067465adaa9c111ada99a041bef9a
Author: Kees Cook <keescook@chromium.org>
Date:   Mon Oct 16 14:43:17 2017 -0700

treewide: setup_timer() -> timer_setup()

This converts all remaining cases of the old setup_timer() API into using
timer_setup(), where the callback argument is the structure already
holding the struct timer_list. These should have no behavioral changes,
since they just change which pointer is passed into the callback with
the same available pointers after conversion. It handles the following
examples, in addition to some other variations.
[..]

Ответ, который я даю, конечно, относится к старым интерфейсам таймера. Новый интерфейс немного отличается и более чистым.

Итак, если вы хотите отличить, какой таймер истекает, вам не следует передавать структуру, такую ​​как struct tmp, содержащую оба таймера, для функции setup_timer .

Другими словами, согласно вашему вопросу, вы настраиваете таймеры с чем-то вроде:

struct tmp t;

setup_timer(&t.a, func, (unsigned long)&t);
setup_timer(&t.b, func, (unsigned long)&t);

Вместо этого вы должны делать:

struct tmp t;

setup_timer(&t.a, func, (unsigned long)&t.a);
setup_timer(&t.b, func, (unsigned long)&t.b);

И затем используйте магию container_of, чтобы перейти от struct timer_list к struct tmp. Я только предполагаю, что этот вопрос мотивирован каким-то домашним заданием, поэтому я оставлю остальных упражнением для читателя. Наслаждайтесь изучением!

0
ответ дан Ezequiel Garcia 17 August 2018 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: