-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests: add media_device_open test
Add a new media test to open, run ioctl, and close the media device file. Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
- Loading branch information
Shuah Khan
committed
Jun 27, 2016
1 parent
e9c0d44
commit b96da0f
Showing
2 changed files
with
83 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
TEST_PROGS := media_device_test | ||
TEST_PROGS := media_device_test media_device_open | ||
all: $(TEST_PROGS) | ||
|
||
include ../lib.mk | ||
|
||
clean: | ||
rm -fr media_device_test | ||
rm -fr media_device_test media_device_open |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
/* | ||
* media_device_open.c - Media Controller Device Open Test | ||
* | ||
* Copyright (c) 2016 Shuah Khan <shuahkh@osg.samsung.com> | ||
* Copyright (c) 2016 Samsung Electronics Co., Ltd. | ||
* | ||
* This file is released under the GPLv2. | ||
*/ | ||
|
||
/* | ||
* This file adds a test for Media Controller API. | ||
* This test should be run as root and should not be | ||
* included in the Kselftest run. This test should be | ||
* run when hardware and driver that makes use Media | ||
* Controller API are present in the system. | ||
* | ||
* This test opens user specified Media Device and calls | ||
* MEDIA_IOC_DEVICE_INFO ioctl, closes the file, and exits. | ||
* | ||
* Usage: | ||
* sudo ./media_device_open -d /dev/mediaX | ||
* | ||
* Run this test is a loop and run bind/unbind on the driver. | ||
*/ | ||
|
||
#include <stdio.h> | ||
#include <unistd.h> | ||
#include <stdlib.h> | ||
#include <errno.h> | ||
#include <string.h> | ||
#include <fcntl.h> | ||
#include <sys/ioctl.h> | ||
#include <sys/stat.h> | ||
#include <linux/media.h> | ||
|
||
int main(int argc, char **argv) | ||
{ | ||
int opt; | ||
char media_device[256]; | ||
int count = 0; | ||
struct media_device_info mdi; | ||
int ret; | ||
int fd; | ||
|
||
if (argc < 2) { | ||
printf("Usage: %s [-d </dev/mediaX>]\n", argv[0]); | ||
exit(-1); | ||
} | ||
|
||
/* Process arguments */ | ||
while ((opt = getopt(argc, argv, "d:")) != -1) { | ||
switch (opt) { | ||
case 'd': | ||
strncpy(media_device, optarg, sizeof(media_device) - 1); | ||
media_device[sizeof(media_device)-1] = '\0'; | ||
break; | ||
default: | ||
printf("Usage: %s [-d </dev/mediaX>]\n", argv[0]); | ||
exit(-1); | ||
} | ||
} | ||
|
||
if (getuid() != 0) { | ||
printf("Please run the test as root - Exiting.\n"); | ||
exit(-1); | ||
} | ||
|
||
/* Open Media device and keep it open */ | ||
fd = open(media_device, O_RDWR); | ||
if (fd == -1) { | ||
printf("Media Device open errno %s\n", strerror(errno)); | ||
exit(-1); | ||
} | ||
|
||
ret = ioctl(fd, MEDIA_IOC_DEVICE_INFO, &mdi); | ||
if (ret < 0) | ||
printf("Media Device Info errno %s\n", strerror(errno)); | ||
else | ||
printf("Media device model %s driver %s\n", | ||
mdi.model, mdi.driver); | ||
} |