Merge "Camera3: Name HAL threads"
diff --git a/QCamera2/stack/mm-camera-interface/inc/mm_camera.h b/QCamera2/stack/mm-camera-interface/inc/mm_camera.h
index 8a58e0e..1dbd79d 100644
--- a/QCamera2/stack/mm-camera-interface/inc/mm_camera.h
+++ b/QCamera2/stack/mm-camera-interface/inc/mm_camera.h
@@ -631,6 +631,7 @@
mm_camera_cmd_thread_t * cmd_thread,
mm_camera_cmd_cb_t cb,
void* user_data);
+extern int32_t mm_camera_cmd_thread_name(const char* name);
extern int32_t mm_camera_cmd_thread_release(mm_camera_cmd_thread_t * cmd_thread);
extern int32_t mm_camera_channel_advanced_capture(mm_camera_obj_t *my_obj,
diff --git a/QCamera2/stack/mm-camera-interface/src/mm_camera.c b/QCamera2/stack/mm-camera-interface/src/mm_camera.c
index 58efca4..eca2e63 100644
--- a/QCamera2/stack/mm-camera-interface/src/mm_camera.c
+++ b/QCamera2/stack/mm-camera-interface/src/mm_camera.c
@@ -114,6 +114,7 @@
static void mm_camera_dispatch_app_event(mm_camera_cmdcb_t *cmd_cb,
void* user_data)
{
+ mm_camera_cmd_thread_name("mm_cam_event");
int i;
mm_camera_event_t *event = &cmd_cb->u.evt;
mm_camera_obj_t * my_obj = (mm_camera_obj_t *)user_data;
diff --git a/QCamera2/stack/mm-camera-interface/src/mm_camera_channel.c b/QCamera2/stack/mm-camera-interface/src/mm_camera_channel.c
index 05d3ff5..f8858a0 100644
--- a/QCamera2/stack/mm-camera-interface/src/mm_camera_channel.c
+++ b/QCamera2/stack/mm-camera-interface/src/mm_camera_channel.c
@@ -162,6 +162,7 @@
static void mm_channel_dispatch_super_buf(mm_camera_cmdcb_t *cmd_cb,
void* user_data)
{
+ mm_camera_cmd_thread_name("mm_cam_cb");
mm_channel_t * my_obj = (mm_channel_t *)user_data;
if (NULL == my_obj) {
@@ -197,6 +198,7 @@
static void mm_channel_process_stream_buf(mm_camera_cmdcb_t * cmd_cb,
void *user_data)
{
+ mm_camera_cmd_thread_name("mm_cam_cmd");
mm_camera_super_buf_notify_mode_t notify_mode;
mm_channel_queue_node_t *node = NULL;
mm_channel_t *ch_obj = (mm_channel_t *)user_data;
diff --git a/QCamera2/stack/mm-camera-interface/src/mm_camera_stream.c b/QCamera2/stack/mm-camera-interface/src/mm_camera_stream.c
index b68fd06..155c709 100644
--- a/QCamera2/stack/mm-camera-interface/src/mm_camera_stream.c
+++ b/QCamera2/stack/mm-camera-interface/src/mm_camera_stream.c
@@ -311,6 +311,7 @@
mm_stream_t * my_obj = (mm_stream_t *)user_data;
mm_camera_buf_info_t* buf_info = NULL;
mm_camera_super_buf_t super_buf;
+ mm_camera_cmd_thread_name("mm_cam_stream");
if (NULL == my_obj) {
return;
diff --git a/QCamera2/stack/mm-camera-interface/src/mm_camera_thread.c b/QCamera2/stack/mm-camera-interface/src/mm_camera_thread.c
old mode 100755
new mode 100644
index c986fce..fdae9e9
--- a/QCamera2/stack/mm-camera-interface/src/mm_camera_thread.c
+++ b/QCamera2/stack/mm-camera-interface/src/mm_camera_thread.c
@@ -32,6 +32,7 @@
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/prctl.h>
#include <fcntl.h>
#include <poll.h>
#include <cam_semaphore.h>
@@ -337,6 +338,7 @@
*==========================================================================*/
static void *mm_camera_poll_thread(void *data)
{
+ prctl(PR_SET_NAME, (unsigned long)"mm_cam_poll_th", 0, 0, 0);
mm_camera_poll_thread_t *poll_cb = (mm_camera_poll_thread_t *)data;
/* add pipe read fd into poll first */
@@ -618,6 +620,15 @@
return rc;
}
+int32_t mm_camera_cmd_thread_name(const char* name)
+{
+ int32_t rc = 0;
+ /* name the thread */
+ prctl(PR_SET_NAME, (unsigned long)name, 0, 0, 0);
+ return rc;
+}
+
+
int32_t mm_camera_cmd_thread_stop(mm_camera_cmd_thread_t * cmd_thread)
{
int32_t rc = 0;
diff --git a/QCamera2/stack/mm-jpeg-interface/src/mm_jpeg.c b/QCamera2/stack/mm-jpeg-interface/src/mm_jpeg.c
index a4828d8..8e47052 100644
--- a/QCamera2/stack/mm-jpeg-interface/src/mm_jpeg.c
+++ b/QCamera2/stack/mm-jpeg-interface/src/mm_jpeg.c
@@ -32,6 +32,7 @@
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/prctl.h>
#include <fcntl.h>
#include <poll.h>
@@ -1602,6 +1603,7 @@
mm_jpeg_obj *my_obj = (mm_jpeg_obj*)data;
mm_jpeg_job_cmd_thread_t *cmd_thread = &my_obj->job_mgr;
mm_jpeg_job_q_node_t* node = NULL;
+ prctl(PR_SET_NAME, (unsigned long)"mm_jpeg_thread", 0, 0, 0);
do {
do {
diff --git a/QCamera2/util/QCameraCmdThread.cpp b/QCamera2/util/QCameraCmdThread.cpp
index a3fe103..c5be4ad 100644
--- a/QCamera2/util/QCameraCmdThread.cpp
+++ b/QCamera2/util/QCameraCmdThread.cpp
@@ -29,6 +29,7 @@
#include <utils/Errors.h>
#include <utils/Log.h>
+#include <sys/prctl.h>
#include "QCameraCmdThread.h"
using namespace android;
@@ -92,6 +93,25 @@
}
/*===========================================================================
+ * FUNCTION : setName
+ *
+ * DESCRIPTION: name the cmd thread
+ *
+ * PARAMETERS :
+ * @name : desired name for the thread
+ *
+ * RETURN : int32_t type of status
+ * NO_ERROR -- success
+ * none-zero failure code
+ *==========================================================================*/
+int32_t QCameraCmdThread::setName(const char* name)
+{
+ /* name the thread */
+ prctl(PR_SET_NAME, (unsigned long)name, 0, 0, 0);
+ return NO_ERROR;
+}
+
+/*===========================================================================
* FUNCTION : sendCmd
*
* DESCRIPTION: send a command to the Cmd Thread
diff --git a/QCamera2/util/QCameraCmdThread.h b/QCamera2/util/QCameraCmdThread.h
index 803dfd6..a9511dc 100644
--- a/QCamera2/util/QCameraCmdThread.h
+++ b/QCamera2/util/QCameraCmdThread.h
@@ -58,6 +58,7 @@
~QCameraCmdThread();
int32_t launch(void *(*start_routine)(void *), void* user_data);
+ int32_t setName(const char* name);
int32_t exit();
int32_t sendCmd(camera_cmd_type_t cmd, uint8_t sync_cmd, uint8_t priority);
camera_cmd_type_t getCmd();