Lines Matching +full:1 +full:- +full:47

1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2022-2024 Red Hat */
26 if (self->hidraw_fd) in detach_bpf()
27 close(self->hidraw_fd); in detach_bpf()
28 self->hidraw_fd = 0; in detach_bpf()
30 if (!self->skel) in detach_bpf()
33 hid__detach(self->skel); in detach_bpf()
35 for (i = 0; i < ARRAY_SIZE(self->hid_links); i++) { in detach_bpf()
36 if (self->hid_links[i]) in detach_bpf()
37 bpf_link__destroy(self->hid_links[i]); in detach_bpf()
40 hid__destroy(self->skel); in detach_bpf()
41 self->skel = NULL; in detach_bpf()
47 uhid_destroy(_metadata, &self->hid); in FIXTURE_TEARDOWN()
50 pthread_join(self->hid.tid, &uhid_err); in FIXTURE_TEARDOWN()
61 err = setup_uhid(_metadata, &self->hid, BUS_USB, 0x0001, 0x0a36, rdesc, sizeof(rdesc)); in FIXTURE_SETUP()
80 int err = -EINVAL; in load_programs()
82 ASSERT_LE(progs_count, ARRAY_SIZE(self->hid_links)) in load_programs()
86 self->skel = hid__open(); in load_programs()
87 ASSERT_OK_PTR(self->skel) TEARDOWN_LOG("Error while calling hid__open"); in load_programs()
94 prog = bpf_object__find_program_by_name(*self->skel->skeleton->obj, in load_programs()
100 map = bpf_object__find_map_by_name(*self->skel->skeleton->obj, in load_programs()
109 *ops_hid_id = self->hid.hid_id; in load_programs()
112 /* we disable the auto-attach feature of all maps because we in load_programs()
116 bpf_object__for_each_map(iter_map, *self->skel->skeleton->obj) in load_programs()
119 err = hid__load(self->skel); in load_programs()
125 map = bpf_object__find_map_by_name(*self->skel->skeleton->obj, in load_programs()
130 self->hid_links[i] = bpf_map__attach_struct_ops(map); in load_programs()
131 ASSERT_OK_PTR(self->hid_links[i]) TH_LOG("failed to attach struct ops '%s'", in load_programs()
135 hid__attach(self->skel); in load_programs()
137 self->hidraw_fd = open_hidraw(&self->hid); in load_programs()
138 ASSERT_GE(self->hidraw_fd, 0) TH_LOG("open_hidraw"); in load_programs()
166 ASSERT_EQ(self->skel->data->callback_check, 52) TH_LOG("callback_check1"); in TEST_F()
167 ASSERT_EQ(self->skel->data->callback2_check, 52) TH_LOG("callback2_check1"); in TEST_F()
170 buf[0] = 1; in TEST_F()
171 buf[1] = 42; in TEST_F()
172 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
175 ASSERT_EQ(self->skel->data->callback_check, 42) TH_LOG("callback_check1"); in TEST_F()
179 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
181 ASSERT_EQ(buf[0], 1); in TEST_F()
182 ASSERT_EQ(buf[2], 47); in TEST_F()
186 buf[0] = 1; in TEST_F()
187 buf[1] = 47; in TEST_F()
188 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
191 ASSERT_EQ(self->skel->data->callback_check, 47) TH_LOG("callback_check1"); in TEST_F()
195 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
217 buf[0] = 1; in TEST_F()
218 buf[1] = 42; in TEST_F()
219 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
223 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
225 ASSERT_EQ(buf[0], 1); in TEST_F()
226 ASSERT_EQ(buf[2], 47); in TEST_F()
230 buf[0] = 1; in TEST_F()
231 buf[1] = 47; in TEST_F()
232 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
236 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
243 * attempt at re-attaching it, we should not lock and
255 link = bpf_map__attach_struct_ops(self->skel->maps.first_event); in TEST_F()
256 ASSERT_NULL(link) TH_LOG("unexpected return value when re-attaching the struct_ops"); in TEST_F()
274 link = self->hid_links[0]; in TEST_F()
275 ASSERT_OK_PTR(link) TH_LOG("HID-BPF link not created"); in TEST_F()
278 ASSERT_GE(link_fd, 0) TH_LOG("HID-BPF link FD not valid"); in TEST_F()
281 buf[0] = 1; in TEST_F()
282 buf[1] = 42; in TEST_F()
283 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
287 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
289 ASSERT_EQ(buf[0], 1); in TEST_F()
290 ASSERT_EQ(buf[2], 47); in TEST_F()
306 self->hidraw_fd = open_hidraw(&self->hid); in TEST_F()
307 ASSERT_GE(self->hidraw_fd, 0) TH_LOG("open_hidraw"); in TEST_F()
311 buf[0] = 1; in TEST_F()
312 buf[1] = 47; in TEST_F()
313 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
317 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
319 ASSERT_EQ(buf[0], 1); in TEST_F()
320 ASSERT_EQ(buf[1], 47); in TEST_F()
324 /* re-attach our program */ in TEST_F()
330 buf[0] = 1; in TEST_F()
331 buf[1] = 42; in TEST_F()
332 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
336 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
338 ASSERT_EQ(buf[0], 1); in TEST_F()
339 ASSERT_EQ(buf[2], 47); in TEST_F()
360 buf[0] = 1; in TEST_F()
361 buf[1] = 42; in TEST_F()
362 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
366 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
369 ASSERT_EQ(buf[1], 42); in TEST_F()
380 .retval = -1, in TEST_F()
392 args.hid = self->hid.hid_id; in TEST_F()
393 args.data[0] = 1; /* report ID */ in TEST_F()
394 args.data[1] = 2; /* report ID */ in TEST_F()
397 prog_fd = bpf_program__fd(self->skel->progs.hid_user_input_report); in TEST_F()
401 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
402 ASSERT_EQ(err, -1) TH_LOG("read_hidraw"); in TEST_F()
412 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
414 ASSERT_EQ(buf[0], 1); in TEST_F()
415 ASSERT_EQ(buf[1], 2); in TEST_F()
426 .retval = -1, in TEST_F()
438 args.hid = self->hid.hid_id; in TEST_F()
439 args.data[0] = 1; /* report ID */ in TEST_F()
440 args.data[1] = 2; /* report ID */ in TEST_F()
443 prog_fd = bpf_program__fd(self->skel->progs.hid_user_output_report); in TEST_F()
459 ASSERT_EQ(output_report[0], 1); in TEST_F()
460 ASSERT_EQ(output_report[1], 2); in TEST_F()
473 .retval = -1, in TEST_F()
486 args.hid = self->hid.hid_id; in TEST_F()
487 args.data[0] = 1; /* report ID */ in TEST_F()
489 prog_fd = bpf_program__fd(self->skel->progs.hid_user_raw_request); in TEST_F()
496 ASSERT_EQ(args.data[1], 2); in TEST_F()
517 buf[0] = 1; in TEST_F()
518 buf[1] = 42; in TEST_F()
519 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
523 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
525 ASSERT_EQ(buf[0], 1); in TEST_F()
526 ASSERT_EQ(buf[1], 42); in TEST_F()
535 err = ioctl(self->hidraw_fd, HIDIOCGFEATURE(sizeof(buf)), buf); in TEST_F()
545 self->hidraw_fd = open_hidraw(&self->hid); in TEST_F()
546 ASSERT_GE(self->hidraw_fd, 0) TH_LOG("open_hidraw"); in TEST_F()
548 err = ioctl(self->hidraw_fd, HIDIOCGFEATURE(sizeof(buf)), buf); in TEST_F()
571 err = ioctl(self->hidraw_fd, HIDIOCGFEATURE(sizeof(buf)), buf); in TEST_F()
575 ASSERT_EQ(buf[1], 3); in TEST_F()
597 err = ioctl(self->hidraw_fd, HIDIOCGFEATURE(sizeof(buf)), buf); in TEST_F()
619 buf[0] = 1; in TEST_F()
620 buf[1] = 42; in TEST_F()
621 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
625 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
627 ASSERT_EQ(buf[0], 1); in TEST_F()
628 ASSERT_EQ(buf[1], 42); in TEST_F()
633 buf[0] = 1; /* report ID */ in TEST_F()
634 buf[1] = 2; in TEST_F()
637 err = write(self->hidraw_fd, buf, 3); in TEST_F()
647 self->hidraw_fd = open_hidraw(&self->hid); in TEST_F()
648 ASSERT_GE(self->hidraw_fd, 0) TH_LOG("open_hidraw"); in TEST_F()
650 err = write(self->hidraw_fd, buf, 3); in TEST_F()
670 buf[0] = 1; /* report ID */ in TEST_F()
671 buf[1] = 2; in TEST_F()
674 err = write(self->hidraw_fd, buf, 10); in TEST_F()
694 buf[0] = 1; /* report ID */ in TEST_F()
695 buf[1] = 2; in TEST_F()
698 err = write(self->hidraw_fd, buf, 8); in TEST_F()
720 buf[0] = 1; in TEST_F()
721 buf[1] = 42; in TEST_F()
722 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
726 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
728 ASSERT_EQ(buf[0], 1); in TEST_F()
729 ASSERT_EQ(buf[1], 47); in TEST_F()
735 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
738 ASSERT_EQ(buf[1], 3); in TEST_F()
758 buf[0] = 1; in TEST_F()
759 buf[1] = 42; in TEST_F()
760 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
764 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
767 ASSERT_EQ(buf[1], 47); in TEST_F()
771 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
774 ASSERT_EQ(buf[1], 52); in TEST_F()
792 buf[0] = 1; /* report ID */ in TEST_F()
793 buf[1] = 2; in TEST_F()
796 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
800 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
802 ASSERT_EQ(buf[0], 1); in TEST_F()
803 ASSERT_EQ(buf[1], 3); in TEST_F()
807 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
809 ASSERT_EQ(buf[0], 1); in TEST_F()
810 ASSERT_EQ(buf[1], 4); in TEST_F()
814 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
815 ASSERT_EQ(err, -1) TH_LOG("read_hidraw"); in TEST_F()
819 * Attach hid_insert{0,1,2} to the given uhid device,
833 .insert_head = 1, in TEST_F()
846 buf[0] = 1; in TEST_F()
847 uhid_send_event(_metadata, &self->hid, buf, 6); in TEST_F()
851 err = read(self->hidraw_fd, buf, sizeof(buf)); in TEST_F()
853 ASSERT_EQ(buf[1], 1); in TEST_F()
874 ASSERT_EQ(self->skel->data->callback2_check, 0x21); in TEST_F()
877 err = ioctl(self->hidraw_fd, HIDIOCGRDESCSIZE, &desc_size); in TEST_F()
884 err = ioctl(self->hidraw_fd, HIDIOCGRDESC, &rpt_desc); in TEST_F()