Теперь это работает так, как я хочу. Я создал 2 правила udev -. 1. стереть устройство /dev/input/js0.
cat /etc/udev/rules.d/98-accelerometer.rules
# joystick-fix
SUBSYSTEM=="input", ACTION=="remove", ATTRS{name}=="Acer BMA150 accelerometer", ATTRS{phys}=="wmi/input1", RUN+="/bin/rm %E{DEVNAME}"
SUBSYSTEM=="input", ACTION=="add", ATTRS{name}=="Acer BMA150 accelerometer", ATTRS{phys}=="wmi/input1", RUN+="/bin/rm %E{DEVNAME}"
К сожалению, Linux помнит это устройство, и мой геймпад снова был /dev/input/js1.
2. создает символическую ссылку /dev/input/js0, поэтому мой эмулятор больше не работает.
cat /etc/udev/rules.d/99-joystick.rules
#joystick-fix 2. part
ACTION=="add", KERNEL=="js[1-9]", SUBSYSTEM=="input", ATTRS{product}=="USB Joystick ", SYMLINK+="input/js0"
«Недопустимый аргумент», вероятно, исходит из perror
, , сообщающих об ошибке EINVAL , установленной unlink
.
Согласно справочной странице , EINVAL может произойти только с unlinkat
, но не для unlink
, а выходные данные фермы показывают вызов unlink
, так что ситуация кажется невозможной. И все же мы здесь.
Я нашел несколько других сообщений об утилитах, сообщающих о «Недопустимом аргументе», когда базовая файловая система не могла обработать кодировку имени файла.
Это, вероятно, не проблема для вас, так как ваше имя файла кажется простым символом ASCII, но я подозреваю, что и здесь EINVAL устанавливается специальным кодом файловой системы -, вызываемым системным вызовом unlink
,так что это будет зависеть от того, какую файловую систему вы используете. В кластере NAS Isilon это, вероятно, OneFS , если только она не находится в странном расположении (, например tmpfs, или на монтировании FUSE ), или на съемном носителе.
В таком случае вам, вероятно, потребуется найти настоящего инженера в Isilon, чтобы он покопался в коде и выяснил, что может вызвать ошибку EINVAL при разъединении.