Приветствую
В продолжении темы Рестартануть драйвер как?
нашел как из консоли бесконечно количество раз рестартить драйвер
systemctl stop ***.service
echo spi0.0 > /sys/bus/spi/drivers/flexfb/unbind
echo spi0.0 > /sys/bus/spi/drivers/flexfb/bind
systemctl start ***.service
делают тоже самое на сях как
static int setSPI(bool mode)
{
const char
* flexfb,
spi[] = "spi0.0";
if (mode)
{
flexfb = "/sys/bus/spi/drivers/flexfb/bind";
fputs("Start spi device\n", stderr);
}
else
{
flexfb = "/sys/bus/spi/drivers/flexfb/unbind";
fputs("Stop spi device\n", stdout);
}
int rt = -1;
int fd = open(flexfb, O_WRONLY);
if (fd > 0)
{
if ((rt = write(fd, spi, sizeof(spi))) <= 0)
fprintf(stderr, "ERROR set SPI: %d %s [%s]\n", errno, strerror(errno), flexfb);
close(fd);
}
else
fprintf(stderr, "ERROR open %s: %d %s\n", flexfb, errno, strerror(errno));
return rt;
}
уже без всяких systemctl просто запускаю и останавливаю приложение и в какой то момент на write(fd не снимаемая БЛОКИРОВКА
где может быть у меня косяк?