static void setup(void) { tst_require_root(); fd = open_uinput(); SAFE_IOCTL(NULL, fd, UI_SET_EVBIT, EV_KEY); SAFE_IOCTL(NULL, fd, UI_SET_KEYBIT, BTN_LEFT); create_device(fd); fd2 = open_device(); }
static void cleanup(void) { int attr; if (clear_flags) { SAFE_IOCTL(fd, FS_IOC_GETFLAGS, &attr); attr &= ~(FS_COMPR_FL | FS_APPEND_FL | FS_IMMUTABLE_FL | FS_NODUMP_FL); SAFE_IOCTL(fd, FS_IOC_SETFLAGS, &attr); } if (fd > 0) SAFE_CLOSE(fd); }
static void setup(void) { tst_require_root(); fd = open_uinput(); setup_mouse_events(fd); SAFE_IOCTL(NULL, fd, UI_SET_EVBIT, EV_KEY); SAFE_IOCTL(NULL, fd, UI_SET_KEYBIT, BTN_RIGHT); create_device(fd); fd2 = SAFE_OPEN(NULL, "/dev/input/mice", O_RDONLY); }
static void setup(void) { tst_require_root(); fd = open_uinput(); SAFE_IOCTL(NULL, fd, UI_SET_EVBIT, EV_KEY); SAFE_IOCTL(NULL, fd, UI_SET_EVBIT, EV_REP); SAFE_IOCTL(NULL, fd, UI_SET_KEYBIT, KEY_X); create_device(fd); fd2 = open_device(); SAFE_IOCTL(NULL, fd2, EVIOCGRAB, 1); }
static void verify_ioctl(void) { unsigned long size = 0; uint64_t size64 = 0; char buf; int ret; fd = SAFE_OPEN(tst_device->dev, O_RDONLY); SAFE_IOCTL(fd, BLKGETSIZE, &size); SAFE_IOCTL(fd, BLKGETSIZE64, &size64); if (size == size64/512) { tst_res(TPASS, "BLKGETSIZE returned %lu, BLKGETSIZE64 %llu", size, (unsigned long long)size64); } else { tst_res(TFAIL, "BLKGETSIZE returned %lu, BLKGETSIZE64 returned %llu", size, (unsigned long long)size64); } if (lseek(fd, size * 512, SEEK_SET) != (off_t)size * 512) { tst_res(TFAIL | TERRNO, "Cannot lseek to the end of the device"); } else { tst_res(TPASS, "Could lseek to the end of the device"); } ret = read(fd, &buf, 1); if (ret == 0) { tst_res(TPASS, "Got EOF when trying to read after the end of device"); } else { tst_res(TFAIL | TERRNO, "Read at the end of device returned %i", ret); } SAFE_CLOSE(fd); }
static void send_information(void) { int nb; SAFE_IOCTL(NULL, fd2, EVIOCGRAB, 1); tst_resm(TINFO, "The virtual device was grabbed"); for (nb = 0; nb < NB_TEST; ++nb) { send_rel_move(fd, 10, 1); usleep(1000); } SAFE_CLOSE(NULL, fd2); }
static void cleanup(void) { SAFE_IOCTL(NULL, fd, UI_DEV_DESTROY, NULL); SAFE_CLOSE(NULL, fd); }
const char *tst_acquire_device_(void (cleanup_fn)(void), unsigned int size) { int fd; char *dev; struct stat st; unsigned int acq_dev_size; uint64_t ltp_dev_size; acq_dev_size = size > 150 ? size : 150; if (device_acquired) tst_brkm(TBROK, cleanup_fn, "Device allready acquired"); if (!tst_tmpdir_created()) { tst_brkm(TBROK, cleanup_fn, "Cannot acquire device without tmpdir() created"); } dev = getenv("LTP_DEV"); if (dev) { tst_resm(TINFO, "Using test device LTP_DEV='%s'", dev); SAFE_STAT(cleanup_fn, dev, &st); if (!S_ISBLK(st.st_mode)) { tst_brkm(TBROK, cleanup_fn, "%s is not a block device", dev); } fd = SAFE_OPEN(cleanup_fn, dev, O_RDONLY); SAFE_IOCTL(cleanup_fn, fd, BLKGETSIZE64, <p_dev_size); SAFE_CLOSE(cleanup_fn, fd); ltp_dev_size = ltp_dev_size/1024/1024; if (acq_dev_size <= ltp_dev_size) { if (tst_fill_file(dev, 0, 1024, 512)) { tst_brkm(TBROK | TERRNO, cleanup_fn, "Failed to clear the first 512k of %s", dev); } return dev; } tst_resm(TINFO, "Skipping $LTP_DEV size %"PRIu64"MB, requested size %uMB", ltp_dev_size, acq_dev_size); } if (tst_fill_file(DEV_FILE, 0, 1024, 1024 * acq_dev_size)) { tst_brkm(TBROK | TERRNO, cleanup_fn, "Failed to create " DEV_FILE); } if (find_free_loopdev()) return NULL; attach_device(cleanup_fn, dev_path, DEV_FILE); device_acquired = 1; return dev_path; }