From f132960789ea8a1cf58ce05d5e009cf3e43046fb Mon Sep 17 00:00:00 2001
From: Gregory Nutt
Date: Sat, 10 Dec 2016 16:06:14 -0600
Subject: [PATCH] Add task_setcanceltype()
---
Documentation/NuttxUserGuide.html | 143 ++++++++++++------
include/sched.h | 25 ++-
include/sys/syscall.h | 13 +-
libc/pthread/Make.defs | 3 +-
libc/pthread/pthread_setcanceltype.c | 29 +++-
libc/sched/Make.defs | 4 +
sched/pthread/Make.defs | 2 +-
sched/task/Make.defs | 4 +
sched/task/task_setcancelstate.c | 39 ++---
.../task_setcanceltype.c} | 39 +++--
syscall/syscall.csv | 2 +-
syscall/syscall_lookup.h | 5 +-
syscall/syscall_stublookup.c | 5 +-
13 files changed, 211 insertions(+), 102 deletions(-)
rename sched/{pthread/pthread_setcanceltype.c => task/task_setcanceltype.c} (80%)
diff --git a/Documentation/NuttxUserGuide.html b/Documentation/NuttxUserGuide.html
index 9efb520f46..a3a911b919 100644
--- a/Documentation/NuttxUserGuide.html
+++ b/Documentation/NuttxUserGuide.html
@@ -204,50 +204,51 @@ paragraphs.
2.1.4 task_delete
2.1.5 task_restart
2.1.6 task_setcancelstate
+ 2.1.7 task_setcanceltype
Standard interfaces
Standard vfork and exec[v|l] interfaces:
Standard posix_spawn interfaces:
Non-standard task control interfaces inspired by posix_spawn:
@@ -609,8 +610,6 @@ VxWorks provides the following similar interface:
Description:
-
-
The task_setcancelstate() function atomically
sets both the calling task's cancelability state to the indicated
state and returns the previous cancelability state at the location
@@ -651,7 +650,50 @@ No thread could be found corresponding to that specified by the given thread ID.
POSIX Compatibility: This is a non-standard interface. It extends the functionality of pthread_setcancelstate() to tasks and supports use of task_delete.
-
+
+
+Function Prototype:
+
+
+ #include <sched.h>
+ int task_setcanceltype(int type, FAR int *oldtype);
+
+
+Description:
+The task_setcanceltype() function atomically both sets the calling task's cancelability type to the indicated type and returns the previous cancelability type at the location referenced by oldtype.
+Legal values for type are TASK_CANCEL_DEFERRED and TASK_CANCEL_ASYNCHRONOUS.
+
+
+The cancelability state and type of any newly created tasks are TASK_CANCEL_ENABLE and TASK_CANCEL_DEFERRED respectively.
+
+
+Input Parameters:
+
+
+
+type
+New cancellation state. One of PTHREAD_CANCEL_DEFERRED or PTHREAD_CANCEL_ASYNCHRONOUS.
+oldtype.
+Location to return the previous cancellation type.
+
+
+
+Returned Value:
+
+
+Zero (OK) on success; ERROR is returned on any failure with the errno value set appropriately:
+
+
+
+ESRCH.
+No thread could be found corresponding to that specified by the given thread ID.
+
+
+
+POSIX Compatibility: This is a non-standard interface. It extends the functionality of pthread_setcanceltype() to tasks and supports use of task_delete.
+
+
+
Function Prototype:
@@ -697,7 +739,7 @@ And the UNIX interface:
The code parameter is ignored.
-
+
Function Prototype:
@@ -725,7 +767,7 @@ level.
Compatible with the POSIX interface of the same name.
-
+
Function Prototype:
@@ -759,7 +801,7 @@ pid_t vfork(void);
Compatible with the Unix interface of the same name.
-
+
Function Prototype:
@@ -845,7 +887,7 @@ int execv(FAR const char *path, FAR char *const argv[]);
There are, however, several compatibility issues as detailed in the description above.
-
+
Function Prototype:
@@ -889,7 +931,7 @@ int execl(FAR const char *path, ...);
There are, however, several compatibility issues as detailed in the description of execv().
-
+
Function Prototype:
@@ -1032,7 +1074,7 @@ int posix_spawnp(FAR pid_t *pid, FAR const char *file,
For the caller of posix_spawn(), the provided argv[0] will correspond to argv[1] received by the new task.
-
+
Function Prototype:
@@ -1058,7 +1100,7 @@ int posix_spawn_file_actions_init(FAR posix_spawn_file_actions_t *file_actions);
On success, this function returns 0; on failure it will return an error number from <errno.h>.
-
+
Function Prototype:
@@ -1085,7 +1127,7 @@ int posix_spawn_file_actions_destroy(FAR posix_spawn_file_actions_t *file_action
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1116,7 +1158,7 @@ int posix_spawn_file_actions_addclose(FAR posix_spawn_file_actions_t *file_actio
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1153,7 +1195,7 @@ int posix_spawn_file_actions_adddup2(FAR posix_spawn_file_actions_t *file_action
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1198,7 +1240,7 @@ int posix_spawn_file_actions_addopen(FAR posix_spawn_file_actions_t *file_action
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1234,7 +1276,7 @@ int posix_spawnattr_init(FAR posix_spawnattr_t *attr);
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1264,7 +1306,7 @@ int posix_spawnattr_getflags(FAR const posix_spawnattr_t *attr, FAR short *flags
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1294,7 +1336,7 @@ int posix_spawnattr_getschedparam(FAR const posix_spawnattr_t *attr, FAR struct
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1324,7 +1366,7 @@ int posix_spawnattr_getschedpolicy(FAR const posix_spawnattr_t *attr, FAR int *p
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1356,7 +1398,7 @@ int posix_spawnattr_getsigmask(FAR const posix_spawnattr_t *attr, FAR sigset_t *
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1386,7 +1428,7 @@ int posix_spawnattr_setflags(FAR posix_spawnattr_t *attr, short flags);
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1416,7 +1458,7 @@ int posix_spawnattr_setschedparam(FAR posix_spawnattr_t *attr, FAR const struct
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1446,7 +1488,7 @@ int posix_spawnattr_setschedpolicy(FAR posix_spawnattr_t *attr, int policy);
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1478,7 +1520,7 @@ int posix_spawnattr_setsigmask(FAR posix_spawnattr_t *attr, FAR const sigset_t *
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1592,7 +1634,7 @@ int task_spawn(FAR pid_t *pid, FAR const char *name, main_t entry,
This is a non-standard interface inspired by posix_spawn().
-
+
Function Prototype:
@@ -1622,7 +1664,7 @@ int task_spawnattr_getstacksize(FAR const posix_spawnattr_t *attr, FAR size_t *s
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -1652,7 +1694,7 @@ int task_spawnattr_setstacksize(FAR posix_spawnattr_t *attr, size_t stacksize);
On success, this function returns 0; on failure it will return an error number from <errno.h>
-
+
Function Prototype:
@@ -10323,6 +10365,7 @@ notify a task when a message is available on a queue.
task_restart
Task Scheduling Interfaces
task_setcancelstate
+ task_spawn
task_spawnattr_getstacksize
task_spawnattr_setstacksize
diff --git a/include/sched.h b/include/sched.h
index 44877c2341..f0e1195911 100644
--- a/include/sched.h
+++ b/include/sched.h
@@ -54,18 +54,30 @@
/* POSIX-like scheduling policies */
-#define SCHED_FIFO 1 /* FIFO priority scheduling policy */
-#define SCHED_RR 2 /* Round robin scheduling policy */
-#define SCHED_SPORADIC 3 /* Sporadic scheduling policy */
-#define SCHED_OTHER 4 /* Not supported */
+#define SCHED_FIFO 1 /* FIFO priority scheduling policy */
+#define SCHED_RR 2 /* Round robin scheduling policy */
+#define SCHED_SPORADIC 3 /* Sporadic scheduling policy */
+#define SCHED_OTHER 4 /* Not supported */
/* Maximum number of SCHED_SPORADIC replenishments */
-#define SS_REPL_MAX CONFIG_SCHED_SPORADIC_MAXREPL
+#define SS_REPL_MAX CONFIG_SCHED_SPORADIC_MAXREPL
+
+/* Cancellation definitions *****************************************************/
+
+/* Cancellation states used by task_setcancelstate() */
+
+#define TASK_CANCEL_ENABLE (0)
+#define TASK_CANCEL_DISABLE (1)
+
+/* Cancellation types used by task_setcanceltype() */
+
+#define TASK_CANCEL_DEFERRED (0)
+#define TASK_CANCEL_ASYNCHRONOUS (1)
/* Pthread definitions **********************************************************/
-#define PTHREAD_KEYS_MAX CONFIG_NPTHREAD_KEYS
+#define PTHREAD_KEYS_MAX CONFIG_NPTHREAD_KEYS
/* CPU affinity mask helpers ***************************************************/
/* These are not standard but are defined for Linux compatibility */
@@ -230,6 +242,7 @@ int task_delete(pid_t pid);
int task_restart(pid_t pid);
int task_setcancelstate(int state, FAR int *oldstate);
+int task_setcanceltype(int type, FAR int *oldtype);
/* Task Scheduling Interfaces (based on POSIX APIs) */
diff --git a/include/sys/syscall.h b/include/sys/syscall.h
index 06aa183658..f0533b6289 100644
--- a/include/sys/syscall.h
+++ b/include/sys/syscall.h
@@ -130,7 +130,13 @@
# define SYS_task_restart (__SYS_task_delete+1)
# define SYS_task_setcancelstate (__SYS_task_delete+2)
# define SYS_up_assert (__SYS_task_delete+3)
-# define __SYS_vfork (__SYS_task_delete+4)
+
+# ifdef CONFIG_CANCELLATION_POINTS
+# define SYS_pthread_setcanceltype (__SYS_task_delete+4)
+# define __SYS_vfork (__SYS_task_delete+5)
+# else
+# define __SYS_vfork (__SYS_task_delete+4)
+# endif
/* The following can be individually enabled */
@@ -407,9 +413,8 @@
# define SYS_pthread_yield (__SYS_pthread+26)
# ifdef CONFIG_CANCELLATION_POINTS
-# define SYS_pthread_setcanceltype (__SYS_pthread+27)
-# define SYS_pthread_testcancel (__SYS_pthread+28)
-# define __SYS_pthread_smp (__SYS_pthread+29)
+# define SYS_pthread_testcancel (__SYS_pthread+27)
+# define __SYS_pthread_smp (__SYS_pthread+28)
# else
# define __SYS_pthread_smp (__SYS_pthread+27)
# endif
diff --git a/libc/pthread/Make.defs b/libc/pthread/Make.defs
index 60ae02b59a..c530947fbc 100644
--- a/libc/pthread/Make.defs
+++ b/libc/pthread/Make.defs
@@ -47,9 +47,10 @@ CSRCS += pthread_mutexattr_init.c pthread_mutexattr_destroy.c
CSRCS += pthread_mutexattr_getpshared.c pthread_mutexattr_setpshared.c
CSRCS += pthread_mutexattr_setprotocol.c pthread_mutexattr_getprotocol.c
CSRCS += pthread_mutexattr_settype.c pthread_mutexattr_gettype.c
+CSRCS += pthread_setcancelstate.c pthread_setcanceltype.c
ifneq ($(CONFIG_CANCELLATION_POINTS),y)
-CSRCS += pthread_setcanceltype.c pthread_testcancel.c
+CSRCS += pthread_testcancel.c
endif
ifeq ($(CONFIG_SMP),y)
diff --git a/libc/pthread/pthread_setcanceltype.c b/libc/pthread/pthread_setcanceltype.c
index 0565367b1b..583376dfcc 100644
--- a/libc/pthread/pthread_setcanceltype.c
+++ b/libc/pthread/pthread_setcanceltype.c
@@ -38,8 +38,24 @@
****************************************************************************/
#include
+#include
#include
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+/* The following are defined in different header files but must have the
+ * same values.
+ */
+
+#if PTHREAD_CANCEL_DEFERRED != TASK_CANCEL_DEFERRED
+# error We must have PTHREAD_CANCEL_DEFERRED == TASK_CANCEL_DEFERRED
+#endif
+
+#if PTHREAD_CANCEL_ASYNCHRONOUS != TASK_CANCEL_ASYNCHRONOUS
+# error We must have PTHREAD_CANCEL_ASYNCHRONOUS == TASK_CANCEL_ASYNCHRONOUS
+#endif
+
/****************************************************************************
* Public Functions
****************************************************************************/
@@ -62,14 +78,15 @@
int pthread_setcanceltype(int type, FAR int *oldtype)
{
- /* Return the current type if so requrested */
+ int ret;
- if (oldtype != NULL)
+ /* task_setcanceltype() can do this */
+
+ ret = task_setcanceltype(type, oldtype);
+ if (ret < 0)
{
- *oldtype = PTHREAD_CANCEL_ASYNCHRONOUS;
+ ret = errno;
}
- /* Check the requested cancellation type */
-
- return (type == PTHREAD_CANCEL_ASYNCHRONOUS) ? OK : ENOSYS;
+ return ret;
}
diff --git a/libc/sched/Make.defs b/libc/sched/Make.defs
index eeb4be1c1b..b7402aea05 100644
--- a/libc/sched/Make.defs
+++ b/libc/sched/Make.defs
@@ -37,6 +37,10 @@
CSRCS += sched_getprioritymax.c sched_getprioritymin.c
+ifneq ($(CONFIG_CANCELLATION_POINTS),y)
+CSRCS += task_setcanceltype.c
+endif
+
ifeq ($(CONFIG_SMP),y)
CSRCS += sched_cpucount.c
endif
diff --git a/sched/pthread/Make.defs b/sched/pthread/Make.defs
index 362a6d63bf..1970de7804 100644
--- a/sched/pthread/Make.defs
+++ b/sched/pthread/Make.defs
@@ -53,7 +53,7 @@ CSRCS += pthread_condtimedwait.c pthread_kill.c pthread_sigmask.c
endif
ifeq ($(CONFIG_CANCELLATION_POINTS),y)
-CSRCS += pthread_setcanceltype.c pthread_testcancel.c
+CSRCS += pthread_testcancel.c
endif
ifeq ($(CONFIG_SMP),y)
diff --git a/sched/task/Make.defs b/sched/task/Make.defs
index 9819db2879..b2543fccdd 100644
--- a/sched/task/Make.defs
+++ b/sched/task/Make.defs
@@ -49,6 +49,10 @@ ifneq ($(CONFIG_BUILD_KERNEL),y)
CSRCS += task_spawn.c
endif
+ifeq ($(CONFIG_CANCELLATION_POINTS),y)
+CSRCS += task_setcanceltype.c
+endif
+
ifneq ($(CONFIG_BINFMT_DISABLE),y)
ifeq ($(CONFIG_LIBC_EXECFUNCS),y)
CSRCS += task_execv.c task_posixspawn.c
diff --git a/sched/task/task_setcancelstate.c b/sched/task/task_setcancelstate.c
index c8fc0460c4..d7003f3af7 100644
--- a/sched/task/task_setcancelstate.c
+++ b/sched/task/task_setcancelstate.c
@@ -39,6 +39,9 @@
#include
+#include
+#include
+#include
#include
#include "sched/sched.h"
@@ -88,17 +91,17 @@ int task_setcancelstate(int state, FAR int *oldstate)
{
if ((tcb->flags & TCB_FLAG_NONCANCELABLE) != 0)
{
- *oldstate = PTHREAD_CANCEL_DISABLE;
+ *oldstate = TASK_CANCEL_DISABLE;
}
else
{
- *oldstate = PTHREAD_CANCEL_ENABLE;
+ *oldstate = TASK_CANCEL_ENABLE;
}
}
/* Set the new cancellation state */
- if (state == PTHREAD_CANCEL_ENABLE)
+ if (state == TASK_CANCEL_ENABLE)
{
/* Clear the non-cancelable flag */
@@ -124,27 +127,27 @@ int task_setcancelstate(int state, FAR int *oldstate)
}
else
#endif
- {
- /* No.. We are using asynchronous cancellation. If the
- * cancellation was pending in this case, then just exit.
- */
+ {
+ /* No.. We are using asynchronous cancellation. If the
+ * cancellation was pending in this case, then just exit.
+ */
- tcb->flags &= ~TCB_FLAG_CANCEL_PENDING;
+ tcb->flags &= ~TCB_FLAG_CANCEL_PENDING;
#ifndef CONFIG_DISABLE_PTHREAD
- if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD)
- {
- pthread_exit(PTHREAD_CANCELED);
- }
- else
+ if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD)
+ {
+ pthread_exit(PTHREAD_CANCELED);
+ }
+ else
#endif
- {
- exit(EXIT_FAILURE);
- }
- }
+ {
+ exit(EXIT_FAILURE);
+ }
+ }
}
}
- else if (state == PTHREAD_CANCEL_DISABLE)
+ else if (state == TASK_CANCEL_DISABLE)
{
/* Set the non-cancelable state */
diff --git a/sched/pthread/pthread_setcanceltype.c b/sched/task/task_setcanceltype.c
similarity index 80%
rename from sched/pthread/pthread_setcanceltype.c
rename to sched/task/task_setcanceltype.c
index ba3704cd2a..b7536f4625 100644
--- a/sched/pthread/pthread_setcanceltype.c
+++ b/sched/task/task_setcanceltype.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * sched/pthread/pthread_setcanceltype.c
+ * sched/task/task_setcanceltype.c
*
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt
@@ -39,32 +39,35 @@
#include
+#include
#include
+#include
#include
#include "sched/sched.h"
+#include "task/task.h"
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
- * Name: pthread_setcancelstate
+ * Name: task_setcancelstate
*
* Description:
- * The pthread_setcanceltype() function atomically both sets the calling
+ * The task_setcanceltype() function atomically both sets the calling
* thread's cancelability type to the indicated type and returns the
* previous cancelability type at the location referenced by oldtype
- * Legal values for type are PTHREAD_CANCEL_DEFERRED and
- * PTHREAD_CANCEL_ASYNCHRONOUS.
+ * Legal values for type are TASK_CANCEL_DEFERRED and
+ * TASK_CANCEL_ASYNCHRONOUS.
*
* The cancelability state and type of any newly created threads,
* including the thread in which main() was first invoked, are
- * PTHREAD_CANCEL_ENABLE and PTHREAD_CANCEL_DEFERRED respectively.
+ * TASK_CANCEL_ENABLE and TASK_CANCEL_DEFERRED respectively.
*
****************************************************************************/
-int pthread_setcanceltype(int type, FAR int *oldtype)
+int task_setcanceltype(int type, FAR int *oldtype)
{
FAR struct tcb_s *tcb = this_task();
int ret = OK;
@@ -81,17 +84,17 @@ int pthread_setcanceltype(int type, FAR int *oldtype)
{
if ((tcb->flags & TCB_FLAG_CANCEL_DEFERRED) != 0)
{
- *oldtype = PTHREAD_CANCEL_DEFERRED;
+ *oldtype = TASK_CANCEL_DEFERRED;
}
else
{
- *oldtype = PTHREAD_CANCEL_ASYNCHRONOUS;
+ *oldtype = TASK_CANCEL_ASYNCHRONOUS;
}
}
/* Set the new cancellation type */
- if (type == PTHREAD_CANCEL_ASYNCHRONOUS)
+ if (type == TASK_CANCEL_ASYNCHRONOUS)
{
/* Clear the deferred cancellation bit */
@@ -106,12 +109,24 @@ int pthread_setcanceltype(int type, FAR int *oldtype)
(tcb->flags & TCB_FLAG_NONCANCELABLE) == 0)
{
tcb->flags &= ~TCB_FLAG_CANCEL_PENDING;
- pthread_exit(PTHREAD_CANCELED);
+
+ /* Exit according to the type of the thread */
+
+#ifndef CONFIG_DISABLE_PTHREAD
+ if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD)
+ {
+ pthread_exit(PTHREAD_CANCELED);
+ }
+ else
+#endif
+ {
+ exit(EXIT_FAILURE);
+ }
}
#endif
}
#ifdef CONFIG_CANCELLATION_POINTS
- else if (type == PTHREAD_CANCEL_DEFERRED)
+ else if (type == TASK_CANCEL_DEFERRED)
{
/* Set the deferred cancellation type */
diff --git a/syscall/syscall.csv b/syscall/syscall.csv
index 0687ee4d4d..42706b701f 100644
--- a/syscall/syscall.csv
+++ b/syscall/syscall.csv
@@ -89,7 +89,6 @@
"pthread_mutex_unlock","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_mutex_t*"
"pthread_once","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_once_t*","CODE void (*)(void)"
"pthread_setaffinity_np","pthread.h","!defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_SMP)","int","pthread_t","size_t","FAR const cpu_set_t*"
-"pthread_setcanceltype","pthread.h","!defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_CANCELLATION_POINTS)","int","int","FAR int*"
"pthread_setschedparam","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_t","int","FAR const struct sched_param*"
"pthread_setschedprio","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_t","int"
"pthread_setspecific","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_key_t","FAR const void*"
@@ -152,6 +151,7 @@
"task_delete","sched.h","","int","pid_t"
"task_restart","sched.h","","int","pid_t"
"task_setcancelstate","sched.h","","int","int","FAR int*"
+"task_setcanceltype","sched.h","defined(CONFIG_CANCELLATION_POINTS)","int","int","FAR int*"
"telldir","dirent.h","CONFIG_NFILE_DESCRIPTORS > 0","off_t","FAR DIR*"
"timer_create","time.h","!defined(CONFIG_DISABLE_POSIX_TIMERS)","int","clockid_t","FAR struct sigevent*","FAR timer_t*"
"timer_delete","time.h","!defined(CONFIG_DISABLE_POSIX_TIMERS)","int","timer_t"
diff --git a/syscall/syscall_lookup.h b/syscall/syscall_lookup.h
index f7e2165351..abd056fe37 100644
--- a/syscall/syscall_lookup.h
+++ b/syscall/syscall_lookup.h
@@ -89,6 +89,10 @@ SYSCALL_LOOKUP(task_restart, 1, STUB_task_restart)
SYSCALL_LOOKUP(task_setcancelstate, 2, STUB_task_setcancelstate)
SYSCALL_LOOKUP(up_assert, 2, STUB_up_assert)
+# ifdef CONFIG_CANCELLATION_POINTS
+ SYSCALL_LOOKUP(task_setcanceltype, 2, STUB_task_setcanceltype)
+# endif
+
/* The following can be individually enabled */
#ifdef CONFIG_ARCH_HAVE_VFORK
@@ -296,7 +300,6 @@ SYSCALL_LOOKUP(up_assert, 2, STUB_up_assert)
SYSCALL_LOOKUP(pthread_setspecific, 2, STUB_pthread_setspecific)
SYSCALL_LOOKUP(pthread_yield, 0, STUB_pthread_yield)
# ifdef CONFIG_CANCELLATION_POINTS
- SYSCALL_LOOKUP(pthread_setcanceltype, 2, STUB_pthread_setcanceltype)
SYSCALL_LOOKUP(pthread_testcancel, 0, STUB_pthread_testcancel)
# endif
# ifdef CONFIG_SMP
diff --git a/syscall/syscall_stublookup.c b/syscall/syscall_stublookup.c
index 34e60fd1fa..61ccb8ecd6 100644
--- a/syscall/syscall_stublookup.c
+++ b/syscall/syscall_stublookup.c
@@ -100,6 +100,9 @@ uintptr_t STUB_task_setcancelstate(int nbr, uintptr_t parm1,
uintptr_t parm2);
uintptr_t STUB_up_assert(int nbr, uintptr_t parm1, uintptr_t parm2);
+uintptr_t STUB_task_setcanceltype(int nbr, uintptr_t parm1,
+ uintptr_t parm2);
+
/* The following can be individually enabled */
uintptr_t STUB_vfork(int nbr);
@@ -300,8 +303,6 @@ uintptr_t STUB_pthread_setspecific(int nbr, uintptr_t parm1,
uintptr_t parm2);
uintptr_t STUB_pthread_yield(int nbr);
-uintptr_t STUB_pthread_setcanceltype(int nbr, uintptr_t parm1,
- uintptr_t parm2);
uintptr_t STUB_pthread_testcancel(int nbr);
uintptr_t STUB_pthread_setaffinity(int nbr, uintptr_t parm1,