diff --git a/ChangeLog.txt b/ChangeLog.txt index e1ed0e677..9b19a6bf4 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -730,4 +730,6 @@ David Sidrane (2013-11-06). * apps/system/composite/composite_main.c: The wrong handle was getting nullified. From David Sidrane (2013-11-7). - + * apps/system/nxplayer: Play thread stack size is now configurable. All + NxPlayer threads now have names assigned via pthread_setname_np(). + From Ken Pettit (2013-11-10). diff --git a/system/nxplayer/Kconfig b/system/nxplayer/Kconfig index 0c366caa5..31362ba3b 100644 --- a/system/nxplayer/Kconfig +++ b/system/nxplayer/Kconfig @@ -11,6 +11,12 @@ config SYSTEM_NXPLAYER if SYSTEM_NXPLAYER +config NXPLAYER_PLAYTHREAD_STACKSIZE + int "NxPlayer thread stack size" + default 1500 + ---help--- + Stack size to use with the NxPlayer play thread. + config NXPLAYER_COMMAND_LINE bool "Include nxplayer command line application" default y diff --git a/system/nxplayer/Makefile b/system/nxplayer/Makefile index bcdcbfc0e..8de9d4b02 100644 --- a/system/nxplayer/Makefile +++ b/system/nxplayer/Makefile @@ -52,7 +52,7 @@ CSRCS = nxplayer.c APPNAME = nxplayer PRIORITY = SCHED_PRIORITY_DEFAULT -STACKSIZE = 3100 +STACKSIZE = 2048 ifeq ($(CONFIG_NXPLAYER_COMMAND_LINE),y) CSRCS += nxplayer_main.c diff --git a/system/nxplayer/nxplayer.c b/system/nxplayer/nxplayer.c index c39900cce..1c0f66c8a 100644 --- a/system/nxplayer/nxplayer.c +++ b/system/nxplayer/nxplayer.c @@ -72,6 +72,10 @@ # define CONFIG_NXPLAYER_MSG_PRIO 1 #endif +#ifndef CONFIG_NXPLAYER_PLAYTHREAD_STACKSIZE +# define CONFIG_NXPLAYER_PLAYTHREAD_STACKSIZE 1500 +#endif + /**************************************************************************** * Private Type Declarations ****************************************************************************/ @@ -1323,7 +1327,8 @@ int nxplayer_playfile(FAR struct nxplayer_s *pPlayer, char* pFilename, int filef pthread_attr_init(&tattr); sparam.sched_priority = sched_get_priority_max(SCHED_FIFO) - 9; - pthread_attr_setschedparam(&tattr, &sparam); + (void)pthread_attr_setschedparam(&tattr, &sparam); + (void)pthread_attr_setstacksize(&tattr, CONFIG_NXPLAYER_PLAYTHREAD_STACKSIZE); /* Add a reference count to the player for the thread and start the * thread. We increment for the thread to avoid thread start-up @@ -1332,13 +1337,17 @@ int nxplayer_playfile(FAR struct nxplayer_s *pPlayer, char* pFilename, int filef nxplayer_reference(pPlayer); ret = pthread_create(&pPlayer->playId, &tattr, nxplayer_playthread, - (pthread_addr_t) pPlayer); + (pthread_addr_t) pPlayer); if (ret != OK) { auddbg("Error %d creating playthread\n", ret); goto err_out; } + /* Name the thread */ + + pthread_setname_np(pPlayer->playId, "playthread"); + return OK; err_out: