我创建了一个名为 /**
* Set Camera parameters for Best image quality available
*
* @param mCamera Camera object
*/
public void setCameraParameters(Camera mCamera) {
Camera.Parameters mCameraParams;
// Set Camera Parameters for best image quality available
if (mCamera != null) {
mCamera.stopPreview();
mCameraParams = mCamera.getParameters();
Camera.Size bestSizeAvailable = null;
List<Camera.Size> listPreviewSizes = mCamera.getParameters().getSupportedPreviewSizes();
bestSizeAvailable = listPreviewSizes.get(0);
for (int i = 1; i < listPreviewSizes.size(); i++) {
if ((listPreviewSizes.get(i).width * listPreviewSizes.get(i).height) > (bestSizeAvailable.width * bestSizeAvailable.height)) {
bestSizeAvailable = listPreviewSizes.get(i);
}
}
List<Integer> listSupportedPreviewFormats = mCameraParams.getSupportedPreviewFormats();
Iterator<Integer> iteratorSupportedPreviewFormats = listSupportedPreviewFormats.iterator();
while (iteratorSupportedPreviewFormats.hasNext()) {
Integer previewFormat = iteratorSupportedPreviewFormats.next();
if (previewFormat == ImageFormat.YV12) {
mCameraParams.setPreviewFormat(previewFormat);
}
}
mCameraParams.setPreviewSize(bestSizeAvailable.width, bestSizeAvailable.height);
mCameraParams.setPictureSize(bestSizeAvailable.width, bestSizeAvailable.height);
mCamera.setParameters(mCameraParams);
mCamera.startPreview();
}
}
的简单内核模块。插入后:
mymodule.c
它被加载并在日志中打印正确的值。我还可以看到创建文件夹insmod mymodule.ko param_int=0x100
。但我没有在/sys/module/mymodule/
我做错了什么?
/sys/module/mymodule/
答案 0 :(得分:2)
这是你的问题:
module_param(param_int, int, 0);
该module_param
宏的最后一个参数是sysfs中变量的权限。由于您在那里指定了零,因此不会导出参数。
将此更改为:
module_param(param_int, int, S_IRUGO | S_IWUSR);
你应该按预期显示它。
答案 1 :(得分:0)
必须在模块代码中明确创建sys /中的条目:
static DEVICE_ATTR(<name>, 0644, show_data, store_data);
static ssize_t store_data (struct device *dev, \
struct device_attribute *attr, \
const char *buf, size_t len)
{
struct platform_device *pdev = to_platform_device(dev);
unsigned int value = simple_strtoul (buf, NULL, 10);
/* ... */
return strnlen(buf, PAGE_SIZE);
}
static ssize_t show_data (struct device *dev, \
struct device_attribute *attr, \
char *buf)
{
struct platform_device *pdev = to_platform_device(dev);
unsigned int value = ...;
return snprintf(buf, PAGE_SIZE, "%u\n", value);
}