Skip to contentSkip to conversation

Remove POSIX non-compliant API pthread_getattr_np

PATCH In review Bian Naimeng 2 participants 3 messages Nov 2, 2010 – Nov 8, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Remove POSIX non-compliant API pthread_getattr_np

The pthread_getattr_np is not a POSIX compliant API, it's unnecessary to test it.

---
 .../interfaces/pthread_attr_setstacksize/2-1.c     |   17 ++++-------------
 1 files changed, 4 insertions(+), 13 deletions(-)
testcases/open_posix_testsuite/conformance/interfaces/pthread_attr_setstacksize/2-1.c +4 -13
index 668fd96..c91c946 100644
@@ -14,7 +14,6 @@
  * 4.  In the created thread, read stacksize
  */
 
-/* For pthread_getattr_np(3) -- not a POSIX compliant API */
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif
@@ -35,21 +34,13 @@
 size_t stack_size;
 void *stack_addr;
 
-void *thread_func()
+void *thread_func(void *arg)
 {
-	pthread_attr_t attr;
+	pthread_attr_t *pattr = (pthread_attr_t *)arg;
 	size_t ssize;
 	int rc;
 
-	if ((rc = pthread_getattr_np(pthread_self(), &attr)) != 0) {
-		printf(ERROR_PREFIX "pthread_getattr_np: %s\n", strerror(rc));
-		exit(PTS_FAIL);
-	}
-	if ((rc = pthread_attr_init(&attr)) != 0) {
-		printf(ERROR_PREFIX "pthread_attr_init: %s\n", strerror(rc));
-		exit(PTS_FAIL);
-	}
-	if ((rc = pthread_attr_getstacksize(&attr, &ssize)) != 0) {
+	if ((rc = pthread_attr_getstacksize(pattr, &ssize)) != 0) {
 		printf(ERROR_PREFIX "pthread_attr_getstacksize: %s\n",
 			strerror(rc));
 		exit(PTS_FAIL);
@@ -106,7 +97,7 @@ int main()
                 exit(PTS_UNRESOLVED);
         }
 
-	rc = pthread_create(&new_th, &attr, thread_func, NULL);
+	rc = pthread_create(&new_th, &attr, thread_func, &attr);
 	if (rc != 0) {
                 printf(ERROR_PREFIX "pthread_create: %s\n", strerror(rc));
                 exit(PTS_FAIL);
Signature · 18 lines
1.7.0.4


-- 
Regards
Bian Naimeng


------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
#1 lore raw

Sorry to make a noise, please ignore this patch.
However, maybe PTS_UNRESOLVED is better if "ssize != stacksize" at the child thread.

Quoted 54 lines · Bian Naimeng

The pthread_getattr_np is not a POSIX compliant API, it's unnecessary to test it.

---
 .../interfaces/pthread_attr_setstacksize/2-1.c     |   17 ++++-------------
 1 files changed, 4 insertions(+), 13 deletions(-)
testcases/open_posix_testsuite/conformance/interfaces/pthread_attr_setstacksize/2-1.c +4 -13
index 668fd96..c91c946 100644
@@ -14,7 +14,6 @@
  * 4.  In the created thread, read stacksize
  */
 
-/* For pthread_getattr_np(3) -- not a POSIX compliant API */
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif
@@ -35,21 +34,13 @@
 size_t stack_size;
 void *stack_addr;
 
-void *thread_func()
+void *thread_func(void *arg)
 {
-	pthread_attr_t attr;
+	pthread_attr_t *pattr = (pthread_attr_t *)arg;
 	size_t ssize;
 	int rc;
 
-	if ((rc = pthread_getattr_np(pthread_self(), &attr)) != 0) {
-		printf(ERROR_PREFIX "pthread_getattr_np: %s\n", strerror(rc));
-		exit(PTS_FAIL);
-	}
-	if ((rc = pthread_attr_init(&attr)) != 0) {
-		printf(ERROR_PREFIX "pthread_attr_init: %s\n", strerror(rc));
-		exit(PTS_FAIL);
-	}
-	if ((rc = pthread_attr_getstacksize(&attr, &ssize)) != 0) {
+	if ((rc = pthread_attr_getstacksize(pattr, &ssize)) != 0) {
 		printf(ERROR_PREFIX "pthread_attr_getstacksize: %s\n",
 			strerror(rc));
 		exit(PTS_FAIL);
@@ -106,7 +97,7 @@ int main()
                 exit(PTS_UNRESOLVED);
         }
 
-	rc = pthread_create(&new_th, &attr, thread_func, NULL);
+	rc = pthread_create(&new_th, &attr, thread_func, &attr);
 	if (rc != 0) {
                 printf(ERROR_PREFIX "pthread_create: %s\n", strerror(rc));
                 exit(PTS_FAIL);
Signature · 14 lines
Regards
Bian Naimeng


------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
#2 lore raw
Quoted 53 lines · Bian Naimeng

Sorry to make a noise, please ignore this patch.
However, maybe PTS_UNRESOLVED is better if "ssize != stacksize" at the child thread.

Quoted 49 lines · Bian Naimeng

The pthread_getattr_np is not a POSIX compliant API, it's unnecessary to test it.

---
 .../interfaces/pthread_attr_setstacksize/2-1.c     |   17 ++++-------------

 1 files changed, 4 insertions(+), 13 deletions(-)
testcases/open_posix_testsuite/conformance/interfaces/pthread_attr_setstacksize/2-1.c +3 -12
index 668fd96..c91c946 100644
@@ -14,7 +14,6 @@
   * 4.  In the created thread, read stacksize
   */
 
-/* For pthread_getattr_np(3) -- not a POSIX compliant API */
  #ifndef _GNU_SOURCE
  #define _GNU_SOURCE
  #endif
@@ -35,21 +34,13 @@
  size_t stack_size;
  void *stack_addr;
 
-void *thread_func()
+void *thread_func(void *arg)
  {
-     pthread_attr_t attr;
+     pthread_attr_t *pattr = (pthread_attr_t *)arg;
       size_t ssize;
       int rc;
 
-     if ((rc = pthread_getattr_np(pthread_self(), &attr)) != 0) {
-             printf(ERROR_PREFIX "pthread_getattr_np: %s\n", strerror(rc));
-             exit(PTS_FAIL);
-     }
-     if ((rc = pthread_attr_init(&attr)) != 0) {
-             printf(ERROR_PREFIX "pthread_attr_init: %s\n", strerror(rc));
-             exit(PTS_FAIL);
-     }
-     if ((rc = pthread_attr_getstacksize(&attr, &ssize)) != 0) {
+     if ((rc = pthread_attr_getstacksize(pattr, &ssize)) != 0) {
               printf(ERROR_PREFIX "pthread_attr_getstacksize: %s\n",
                       strerror(rc));
               exit(PTS_FAIL);
@@ -106,7 +97,7 @@ int main()
                  exit(PTS_UNRESOLVED);
          }
 
Quoted 5 lines

testcases/open_posix_testsuite/conformance/interfaces/pthread_attr_setstacksize/2-1.c int main() · line 103

Quoted 5 lines
testcases/open_posix_testsuite/conformance/interfaces/pthread_attr_setstacksize/2-1.c +1 -1
-     rc = pthread_create(&new_th, &attr, thread_func, NULL);
+     rc = pthread_create(&new_th, &attr, thread_func, &attr);
       if (rc != 0) {
                  printf(ERROR_PREFIX "pthread_create: %s\n", strerror(rc));
                  exit(PTS_FAIL);

Possibly, but the only problem with that is that there really needs to be a means to sample the current thread stack size. That's what's missing that needs to go into the POSIX spec.
-Garrett

------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list