int f = open("/dev/plcm_drv", O_RDWR);
printf("%x\n", ioctl(f, 0xC, 0) );
####
sysopen(DEVICE, "/dev/plcm_drv", O_RDWR);
print sprintf("%x", ioctl(DEVICE, 0xC, 0)) . "\n";
####
Working (C, ioctl 0xC):
open("/dev/plcm_drv", O_RDWR) = 3
ioctl(3, 0xc, 0) = 142
Working (Perl, ioctl 1):
open("/dev/plcm_drv", O_RDWR|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xff86b540) = -1 EOPNOTSUPP (Operation not supported)
_llseek(3, 0, [0], SEEK_CUR) = 0
fstat64(3, {st_mode=S_IFCHR|0644, st_rdev=makedev(241, 0), ...}) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
ioctl(3, FIBMAP, 0) = 0
close(3) = 0
Not Working (Perl, ioctl 0xC):
open("/dev/plcm_drv", O_RDWR|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xffe34310) = -1 EOPNOTSUPP (Operation not supported)
_llseek(3, 0, [0], SEEK_CUR) = 0
fstat64(3, {st_mode=S_IFCHR|0644, st_rdev=makedev(241, 0), ...}) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
ioctl(3, 0xc, 0) = -1 EINVAL (Invalid argument)
close(3) = 0