重複の可能性:
負の値のunsigned long
システムコールを中断し、現在のuser_idとシステムコール関数に渡された入力パラメーターを出力するカーネルモジュールを1つ作成しました。その中には、次のようなsys_ioctl()があります。
asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd,unsigned long arg);
これは、すべての入力パラメーターが符号なし整数であることを意味します。
しかし、入力パラメーターを出力すると、次の出力が得られます。
fd=21, cmd=-1072143871 and arg=3202983648
fd=21, cmd=-1072143871 and arg=3202983648
fd=21, cmd=-1072143871 and arg=3202983648
----------
これが私の関数定義です:
asmlinkage long our_sys_ioctl(unsigned int fd , unsigned int cmd , unsigned long arg)
{
uid_t gtuid ;
gtuid = getuid_call();
printk ("our_sys_ioctl ---> uid = %d with fd=%i, cmd=%i and arg=%lu \n ", gtuid, fd, cmd, arg);
return original_call_ioctl(fd , cmd , arg);
}
cmd値が負である理由と、これらの値が何を意味するのか、何か考えはありますか?