Это только половина ответа, но он слишком велик для комментария.
Есть ли другие действия в вашей device_write
функции?
Сделайте очень простой printk
в верхней части функции device_write
и посмотрите, печатает ли она. Что-то вроде
static int device_write(struct file* file,const char* buff,int count, loff * offp)
{
printk("%s: %s\n", __FILE__, __func__);
, который выполняется независимо от того, что еще происходит в функции. Если это напечатано, то вы можете сузить, куда идти оттуда.
Если это не сработает, убедитесь, что вы фактически устанавливаете указатель на функцию в структуре устройства. Или, возможно, ваша ошибка в тестовом приложении. Вы уверены, что открыли устройство с правами на запись? Это было бы простой ошибкой, если вы скопировали код из программы, изначально написанной просто для проверки функциональности чтения.