static int dsi_panel_set_backlight_external(int value) { int ret = 0; ret = kthread_run(lcd_bl_set_led_brightness, (void *)&value, "lcd_bl_set_led_brightness");
时间: 2024-04-26 17:22:29 浏览: 130
这段代码看起来将创建一个名为lcd_bl_set_led_brightness的线程,并将value的地址传递给该线程作为参数。你需要确保lcd_bl_set_led_brightness线程的实现是正确的,并且能够正确处理value参数。此外,你还需要检查kthread_run函数的返回值,确保线程创建成功。如果kthread_run函数返回值小于0,则说明线程创建失败,你需要在代码中处理这种情况,以防止程序出现问题。
相关问题
static int dsi_panel_set_backlight_external(int value) { int ret = 0; ret = kthread_run(lcd_bl_set_led_brightness, (void *)value, "lcd_bl_set_led_brightness");
这段代码看起来将创建一个名为lcd_bl_set_led_brightness的线程,并将value的值直接传递给该线程作为参数。这种情况下,你需要确保lcd_bl_set_led_brightness线程的实现能够正确处理value参数的值。此外,你还需要检查kthread_run函数的返回值,确保线程创建成功。如果kthread_run函数返回值小于0,则说明线程创建失败,你需要在代码中处理这种情况,以防止程序出现问题。
static int dsi_panel_set_backlight_external(int value){ int ret = 0; ret = kthread_run(lcd_bl_set_led_brightness, (void *)value, "lcd_bl_set_led_brightness"); if (ret < 0) { pr_err("Failed to create lcd_bl_set_led_brightness thread\n"); } ret = kthread_run(lcd_bias_set_led_brightness, (void *)value, "lcd_bias_set_led_brightness"); if (ret < 0) { pr_err("Failed to create lcd_bias_set_led_brightness thread\n"); } return ret;}这个代码会有kernel/msm-4.19/techpack/display/msm/dsi/dsi_panel.c:761:47: warning: cast to 'void *' from smaller integer type 'int' [-Wint-to-void-pointer-cast] error, forbidden warning: dsi_panel.c:761这个报错,该怎么解决
这个编译警告的原因是函数 `kthread_run()` 的第二个参数需要传入 `void*` 类型的指针,而在这个代码中,value 是一个整型变量,需要转换成 `void*` 类型的指针。你可以使用 `intptr_t` 类型来完成这个转换,它可以安全地将一个整型变量转换成指针类型。修改后的代码如下:
```
static int dsi_panel_set_backlight_external(int value)
{
int ret = 0;
ret = kthread_run(lcd_bl_set_led_brightness, (void *)(intptr_t)value, "lcd_bl_set_led_brightness");
if (ret < 0) {
pr_err("Failed to create lcd_bl_set_led_brightness thread\n");
}
ret = kthread_run(lcd_bias_set_led_brightness, (void *)(intptr_t)value, "lcd_bias_set_led_brightness");
if (ret < 0) {
pr_err("Failed to create lcd_bias_set_led_brightness thread\n");
}
return ret;
}
```
这个修改会把整型变量 value 转换成一个 intptr_t 类型的指针,然后再传给 `kthread_run()` 函数。这样就可以消除这个编译警告了。
阅读全文