Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > comp.lang.c > #26924

Re: Trivial C11 threads.h wrapper (public domain)

From Jens Gustedt <jens.gustedt@loria.fr>
Newsgroups comp.lang.c, comp.programming.threads
Subject Re: Trivial C11 threads.h wrapper (public domain)
Date 2012-10-01 11:47 +0200
Organization A noiseless patient Spider
Message-ID <506966CA.6080308@loria.fr> (permalink)
References (1 earlier) <5065EAFD.1050102@loria.fr> <5068B604.9020606@web.de> <lnwqzbryia.fsf@nuthaus.mib.org> <5068C9C3.6090502@loria.fr> <50696193.3090503@web.de>

Cross-posted to 2 groups.

Show all headers | View raw


Hallo Marcus,

Am 01.10.2012 11:25, schrieb Markus Elfring:
>> Exactly, in particular there are some linux systems where the headers
>> are annotated with gcc extensions that make it difficult to ignore the
>> return of a system function.
> 
> I would appreciate if such return value ignorance can be avoided.
> http://stackoverflow.com/questions/12416604/failing-compilation-if-return-value-is-unused-for-a-certain-type#12416677

The problem here is that this is not an interface that I/we design,
but that this is supposed to emulate a C library interface. The
description there is extremely concise, and in particular it doesn't
foresee the possibility of failure of the call. (For other functions
the standard would have some generic phrase "if you pass invalid input
to the function the behavior is undefined".)

>> And then, finally, the C11 standard leaves no way to get semantic of a
>> failed call accros, here.
> 
> I find this information questionable. I get the impression from one of your
> articles that you know also alternative approaches.
> http://gustedt.wordpress.com/2012/07/15/capture-return-codes-from-library-functions/

The wrappers there suppose that the functions *do* give a return
indication that something went wrong and then provide an possible
extension to capture such an error with a try/catch mechanism.

If you'd want to have such a wrapper around the *pthread* functions,
there is no problem, and you could even use P99 tools for that.

I think I can't do that per default, here, since the mtx_destroy
function then would be non-conforming.

But one could definitively think of an optional header that wraps the
pthread calls (and perhaps other POSIX stuff) and put a red tape on
that saying that the resulting code may not be C11 conforming on
certain aspects.

>> Do you see a way to use the return value in some way?
> 
> Yes, of course!   ;-)
> 
> How do think about to forward the error code to a log message for a file like
> "stderr" eventually?
> Would you like to call the function "abort" if a function call like
> "pthread_mutex_destroy" failed?
> 
> Is the completion of error detection and corresponding exception handling an
> open issue also in the affected wrapper implementation?

No, I don't think that this is a general problem, since most of the
C11 function foresee a mechanism to return error conditions. There are
only a few functions like this one that don't have any at all.

What is generally happening, though, is that the error conditions that
C11 foresees are only a subset of what POSIX provides. So sometimes
there might be a loss of information.

Jens

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Trivial C11 threads.h wrapper (public domain) John Tsiombikas <nuclear@member.fsf.org> - 2012-09-27 03:38 +0000
  Re: Trivial C11 threads.h wrapper (public domain) Keith Thompson <kst-u@mib.org> - 2012-09-26 20:50 -0700
    Re: Trivial C11 threads.h wrapper (public domain) John Tsiombikas <nuclear@member.fsf.org> - 2012-09-27 04:15 +0000
      Re: Trivial C11 threads.h wrapper (public domain) Lorenzo Beretta <lory.fulgi@infinito.it> - 2012-09-27 16:35 +0200
        Re: Trivial C11 threads.h wrapper (public domain) John Tsiombikas <nuclear@member.fsf.org> - 2012-09-27 15:58 +0000
          Re: Trivial C11 threads.h wrapper (public domain) Lorenzo Beretta <lory.fulgi@infinito.it> - 2012-09-27 18:27 +0200
            Re: Trivial C11 threads.h wrapper (public domain) Giorgos Keramidas <keramida@ceid.upatras.gr> - 2012-09-29 18:05 +0200
          Re: Trivial C11 threads.h wrapper (public domain) William Ahern <william@wilbur.25thandClement.com> - 2012-09-28 12:08 -0700
          Re: Trivial C11 threads.h wrapper (public domain) Kaz Kylheku <kaz@kylheku.com> - 2012-09-28 19:38 +0000
            Re: Trivial C11 threads.h wrapper (public domain) William Ahern <william@wilbur.25thandClement.com> - 2012-09-28 13:23 -0700
            Re: Trivial C11 threads.h wrapper (public domain) Lorenzo Beretta <lory.fulgi@infinito.it> - 2012-09-29 18:35 +0200
          Re: Trivial C11 threads.h wrapper (public domain) Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-28 15:50 -0400
            Re: Trivial C11 threads.h wrapper (public domain) Lorenzo Beretta <lory.fulgi@infinito.it> - 2012-09-29 18:41 +0200
  Re: Trivial C11 threads.h wrapper (public domain) Markus Elfring <Markus.Elfring@web.de> - 2012-09-27 13:45 +0200
    Re: Trivial C11 threads.h wrapper (public domain) John Tsiombikas <nuclear@member.fsf.org> - 2012-09-27 16:14 +0000
      Re: Trivial C11 threads.h wrapper (public domain) Markus Elfring <Markus.Elfring@web.de> - 2012-09-28 12:05 +0200
        Re: Trivial C11 threads.h wrapper (public domain) Keith Thompson <kst-u@mib.org> - 2012-09-28 03:39 -0700
        Re: Trivial C11 threads.h wrapper (public domain) James Kuyper <jameskuyper@verizon.net> - 2012-09-28 08:23 -0400
          Re: Trivial C11 threads.h wrapper (public domain) John Tsiombikas <nuclear@member.fsf.org> - 2012-09-28 19:48 +0000
    Re: Trivial C11 threads.h wrapper (public domain) Toby Douglass <a@b.com> - 2012-10-01 20:19 +0200
      Re: Trivial C11 threads.h wrapper (public domain) James Kuyper <jameskuyper@verizon.net> - 2012-10-01 14:37 -0400
      Re: Trivial C11 threads.h wrapper (public domain) Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-10-01 14:38 -0400
      Re: Trivial C11 threads.h wrapper (public domain) Keith Thompson <kst-u@mib.org> - 2012-10-01 14:58 -0700
  Re: Trivial C11 threads.h wrapper (public domain) Jens Gustedt <jens.gustedt@loria.fr> - 2012-09-28 20:22 +0200
    Re: Trivial C11 threads.h wrapper (public domain) Markus Elfring <Markus.Elfring@web.de> - 2012-09-30 23:13 +0200
      Re: Trivial C11 threads.h wrapper (public domain) Keith Thompson <kst-u@mib.org> - 2012-09-30 14:28 -0700
        Re: Trivial C11 threads.h wrapper (public domain) Jens Gustedt <jens.gustedt@loria.fr> - 2012-10-01 00:37 +0200
          Re: Trivial C11 threads.h wrapper (public domain) Jens Gustedt <jens.gustedt@loria.fr> - 2012-10-01 00:44 +0200
            Re: Trivial C11 threads.h wrapper (public domain) Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-30 19:48 -0400
              Re: Trivial C11 threads.h wrapper (public domain) Jens Gustedt <jens.gustedt@loria.fr> - 2012-10-01 08:26 +0200
          Re: Trivial C11 threads.h wrapper (public domain) Markus Elfring <Markus.Elfring@web.de> - 2012-10-01 11:25 +0200
            Re: Trivial C11 threads.h wrapper (public domain) Jens Gustedt <jens.gustedt@loria.fr> - 2012-10-01 11:47 +0200
              Re: Trivial C11 threads.h wrapper (public domain) Markus Elfring <Markus.Elfring@web.de> - 2012-10-01 12:05 +0200
                Re: Trivial C11 threads.h wrapper (public domain) Jens Gustedt <jens.gustedt@loria.fr> - 2012-10-01 13:15 +0200
                Clarification for interface specification "C11 threads.h" Markus Elfring <Markus.Elfring@web.de> - 2012-10-03 11:02 +0200
                Re: Clarification for interface specification "C11 threads.h" Keith Thompson <kst-u@mib.org> - 2012-10-03 13:29 -0700
                Re: Clarification for interface specification "C11 threads.h" Jens Gustedt <jens.gustedt@loria.fr> - 2012-10-04 13:35 +0200
                Re: Clarification for interface specification "C11 threads.h" Markus Elfring <Markus.Elfring@web.de> - 2012-10-12 17:45 +0200
                Re: Trivial C11 threads.h wrapper (public domain) Noob <root@127.0.0.1> - 2012-10-01 18:10 +0200
              Re: Trivial C11 threads.h wrapper (public domain) Nick Bowler <nbowler@draconx.ca> - 2012-10-01 19:28 +0000
              Re: Trivial C11 threads.h wrapper (public domain) Keith Thompson <kst-u@mib.org> - 2012-10-01 15:19 -0700
                Re: Trivial C11 threads.h wrapper (public domain) Kaz Kylheku <kaz@kylheku.com> - 2012-10-01 23:57 +0000
      Re: Trivial C11 threads.h wrapper (public domain) Jens Gustedt <jens.gustedt@loria.fr> - 2012-10-02 14:48 +0200

csiph-web