~ubuntu-branches/ubuntu/utopic/eglibc/utopic

« back to all changes in this revision

Viewing changes to hurd/ctty-output.c

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2012-10-26 05:14:58 UTC
  • mfrom: (1.5.1) (4.4.22 experimental)
  • Revision ID: package-import@ubuntu.com-20121026051458-oryotr4i03ob5pab
Tags: 2.16-0ubuntu1
* Merge with unreleased 2.16 in Debian experimental, remaining changes:
  - Drop the Breaks line from libc6, which refers to a Debian transition
  - Remove the libc6 recommends on libc6-i686, which we don't build
  - Enable libc6{,-dev}-armel on armhf and libc6{-dev}-armhf on armel
  - Ship update-locale and validlocale in /usr/sbin in libc-bin
  - Don't build locales or locales-all in Ubuntu, we rely on langpacks
  - Heavily mangle the way we do service restarting on major upgrades
  - Use different MIN_KERNEL_SUPPORTED versions than Debian, due to
    buildd needs.  This should be universally bumped to 3.2.0 once all
    our buildds (including the PPA guests) are running precise kernels
  - Build i386 variants as -march=i686, build amd64 with -O3, and build
    ppc64 variants (both 64-bit and 32-bit) with -O3 -fno-tree-vectorize
  - Re-enable unsubmitted-ldconfig-cache-abi.diff and rebuild the cache
    on upgrades from previous versions that used a different constant
  - debian/patches/any/local-CVE-2012-3406.diff: switch to malloc when
    array grows too large to handle via alloca extension (CVE-2012-3406)
  - Build generic i386/i686 flavour with -mno-tls-direct-seg-refs
* Changes added/dropped with this merge while reducing our delta:
  - Stop building glibc docs from the eglibc source, and instead make
    the glibc-docs stub have a hard dependency on glibc-doc-reference
  - Remove outdated conflicts against ancient versions of ia32-libs
  - Drop the tzdata dependency from libc6, it's in required and minimal
  - Use gcc-4.7/g++-4.7 by default on all our supported architectures
  - Save our historical changelog as changelog.ubuntu in the source
  - Drop nscd's libaudit build-dep for now, as libaudit is in universe
  - Drop the unnecessary Breaks from libc6 to locales and locales-all
  - Ship xen's ld.so.conf.d snippet as /etc/ld.so.conf.d/libc6-xen.conf
* Disable hard failures on the test suite for the first upload to raring

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* _hurd_ctty_output -- Do an output RPC and generate SIGTTOU if necessary.
2
 
   Copyright (C) 1995,97,99 Free Software Foundation, Inc.
 
2
   Copyright (C) 1995,97,99,2011 Free Software Foundation, Inc.
3
3
   This file is part of the GNU C Library.
4
4
 
5
5
   The GNU C Library is free software; you can redistribute it and/or
13
13
   Lesser General Public License for more details.
14
14
 
15
15
   You should have received a copy of the GNU Lesser General Public
16
 
   License along with the GNU C Library; if not, write to the Free
17
 
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18
 
   02111-1307 USA.  */
 
16
   License along with the GNU C Library; if not, see
 
17
   <http://www.gnu.org/licenses/>.  */
19
18
 
20
19
#include <hurd.h>
21
20
#include <hurd/signal.h>
35
34
 
36
35
      do
37
36
        {
 
37
          struct sigaction *actions;
 
38
 
38
39
          /* Don't use the ctty io port if we are blocking or ignoring
39
40
             SIGTTOU.  We redo this check at the top of the loop in case
40
41
             the signal handler changed the state.  */
41
 
          __spin_lock (&ss->lock);
 
42
          _hurd_sigstate_lock (ss);
 
43
          actions = _hurd_sigstate_actions (ss);
42
44
          if (__sigismember (&ss->blocked, SIGTTOU) ||
43
 
              ss->actions[SIGTTOU].sa_handler == SIG_IGN)
 
45
              actions[SIGTTOU].sa_handler == SIG_IGN)
44
46
            err = EIO;
45
47
          else
46
48
            err = 0;
47
 
          __spin_unlock (&ss->lock);
 
49
          _hurd_sigstate_unlock (ss);
48
50
 
49
51
          if (err)
50
52
            return (*rpc) (port);
71
73
                     SIGTTOU or resumed after being stopped.  Now this is
72
74
                     still a "system call", so check to see if we should
73
75
                  restart it.  */
74
 
                  __spin_lock (&ss->lock);
75
 
                  if (!(ss->actions[SIGTTOU].sa_flags & SA_RESTART))
 
76
                  _hurd_sigstate_lock (ss);
 
77
                  actions = _hurd_sigstate_actions (ss);
 
78
                  if (!(actions[SIGTTOU].sa_flags & SA_RESTART))
76
79
                    err = EINTR;
77
 
                  __spin_unlock (&ss->lock);
 
80
                  _hurd_sigstate_unlock (ss);
78
81
                }
79
82
            }
80
83
          /* If the last RPC generated a SIGTTOU, loop to try it again.  */