Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Update.
2004-04-16  Jakub Jelinek  <jakub@redhat.com>

	* misc/syslog.c (vsyslog): Avoid freeing failbuf.

2004-04-15  Jakub Jelinek  <jakub@redhat.com>

	* rt/Makefile (tests): Add tst-timer4.
	* rt/tst-timer4.c: New test.

2004-04-15  Jakub Jelinek  <jakub@redhat.com>

	* rt/tst-mqueue5.c (rtmin_code): New variable.
	(rtmin_handler): Set it.
	(thr, do_child, do_test): Also check rtmin_code.

2004-04-14  Jakub Jelinek  <jakub@redhat.com>

	* rt/Makefile (tests): Add tst-mqueue7.
	(tst-mqueue7-ARGS): Set.
	* rt/tst-mqueue7.c: New test.

2004-04-13  Jakub Jelinek  <jakub@redhat.com>

	* rt/Makefile (tests): Add tst-mqueue5 and tst-mqueue6.
	* rt/tst-mqueue1.c (do_one_test): Bitwise or check_attrs () into
	result instead of replacing it.  Use TEMP_FAILURE_RETRY around
	waitpid, kill child if waitpid failed.
	(do_test): Bitwise or check_attrs () into result instead of replacing
	it.  Change temp mq name.
	* rt/tst-mqueue5.c: New test.
	* rt/tst-mqueue6.c: New test.
	* rt/tst-mqueue.h: Include stdio.h, unistd.h, sys/uio.h.
	(temp_mq_list, delete_temp_mqs): Remove.
	(temp_mq_fd): New variable.
	(do_cleanup, do_prepare): New functions.
	(add_temp_mq): Rewritten to use a temp file.
	(PREPARE): Define.
	(CLEANUP_HANDLER): Change to do_cleanup ().

	* rt/tst-timer3.c: Don't fail if _POSIX_THREADS is not available.

2004-04-13  Thorsten Kukuk  <kukuk@suse.de>

	* sysdeps/s390/ffs.c: Include limits.h

2004-04-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sysdeps/unix/sysv/linux/sh/sysdep.h (SUBSTITUTE_ARGS_1,
	SUBSTITUTE_ARGS_2, SUBSTITUTE_ARGS_3, SUBSTITUTE_ARGS_4,
	SUBSTITUTE_ARGS_5, SUBSTITUTE_ARGS_6, SUBSTITUTE_ARGS_7): Load
	argument values into temporary variables.
  • Loading branch information
Ulrich Drepper committed Apr 16, 2004
1 parent f93fa7d commit efa8adf
Show file tree
Hide file tree
Showing 10 changed files with 2,170 additions and 35 deletions.
52 changes: 52 additions & 0 deletions ChangeLog
@@ -1,3 +1,55 @@
2004-04-16 Jakub Jelinek <jakub@redhat.com>

* misc/syslog.c (vsyslog): Avoid freeing failbuf.

2004-04-15 Jakub Jelinek <jakub@redhat.com>

* rt/Makefile (tests): Add tst-timer4.
* rt/tst-timer4.c: New test.

2004-04-15 Jakub Jelinek <jakub@redhat.com>

* rt/tst-mqueue5.c (rtmin_code): New variable.
(rtmin_handler): Set it.
(thr, do_child, do_test): Also check rtmin_code.

2004-04-14 Jakub Jelinek <jakub@redhat.com>

* rt/Makefile (tests): Add tst-mqueue7.
(tst-mqueue7-ARGS): Set.
* rt/tst-mqueue7.c: New test.

2004-04-13 Jakub Jelinek <jakub@redhat.com>

* rt/Makefile (tests): Add tst-mqueue5 and tst-mqueue6.
* rt/tst-mqueue1.c (do_one_test): Bitwise or check_attrs () into
result instead of replacing it. Use TEMP_FAILURE_RETRY around
waitpid, kill child if waitpid failed.
(do_test): Bitwise or check_attrs () into result instead of replacing
it. Change temp mq name.
* rt/tst-mqueue5.c: New test.
* rt/tst-mqueue6.c: New test.
* rt/tst-mqueue.h: Include stdio.h, unistd.h, sys/uio.h.
(temp_mq_list, delete_temp_mqs): Remove.
(temp_mq_fd): New variable.
(do_cleanup, do_prepare): New functions.
(add_temp_mq): Rewritten to use a temp file.
(PREPARE): Define.
(CLEANUP_HANDLER): Change to do_cleanup ().

* rt/tst-timer3.c: Don't fail if _POSIX_THREADS is not available.

2004-04-13 Thorsten Kukuk <kukuk@suse.de>

* sysdeps/s390/ffs.c: Include limits.h

2004-04-13 Kaz Kojima <kkojima@rr.iij4u.or.jp>

* sysdeps/unix/sysv/linux/sh/sysdep.h (SUBSTITUTE_ARGS_1,
SUBSTITUTE_ARGS_2, SUBSTITUTE_ARGS_3, SUBSTITUTE_ARGS_4,
SUBSTITUTE_ARGS_5, SUBSTITUTE_ARGS_6, SUBSTITUTE_ARGS_7): Load
argument values into temporary variables.

2004-04-15 Atsushi Nemoto <anemo@mba.ocn.ne.jp>

* sysdeps/mips/dl-machine.h (RTLD_START): Do not use nested .end.
Expand Down
5 changes: 3 additions & 2 deletions misc/syslog.c
Expand Up @@ -237,7 +237,7 @@ vsyslog(pri, fmt, ap)
v->iov_len = 1;
}

__libc_cleanup_push (free, buf);
__libc_cleanup_push (free, buf == failbuf ? NULL : buf);

/* writev is a cancellation point. */
(void)__writev(STDERR_FILENO, iov, v - iov + 1);
Expand Down Expand Up @@ -305,7 +305,8 @@ vsyslog(pri, fmt, ap)
__libc_cleanup_pop (0);
__libc_lock_unlock (syslog_lock);

free (buf);
if (buf != failbuf)
free (buf);
}
libc_hidden_def (vsyslog)

Expand Down
4 changes: 3 additions & 1 deletion rt/Makefile
Expand Up @@ -44,7 +44,7 @@ librt-routines = $(aio-routines) \
tests := tst-shm tst-clock tst-clock_nanosleep tst-timer tst-timer2 \
tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
tst-aio7 tst-mqueue1 tst-mqueue2 tst-mqueue3 tst-mqueue4 \
tst-timer3
tst-mqueue5 tst-mqueue6 tst-mqueue7 tst-timer3 tst-timer4

extra-libs := librt
extra-libs-others := $(extra-libs)
Expand Down Expand Up @@ -75,6 +75,8 @@ ifeq (yes,$(build-bounded))
$(tests:%=$(objpfx)%-bp): $(objpfx)librt_b.a $(bounded-thread-library)
endif

tst-mqueue7-ARGS = -- $(built-program-cmd)

ifeq (yes,$(build-static-nss))
otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
$(resolvobjdir)/libresolv.a
Expand Down
64 changes: 43 additions & 21 deletions rt/tst-mqueue.h
Expand Up @@ -21,42 +21,64 @@
#include <mqueue.h>
#include <search.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/uio.h>
#include <unistd.h>

/* List of temporary files. */
struct temp_mq_list
{
struct qelem q;
char name[1];
} *temp_mq_list;
static int temp_mq_fd;

/* Add temporary files in list. */
static void
__attribute__ ((unused))
add_temp_mq (const char *name)
{
size_t len = strlen (name);
struct temp_mq_list *newp
= (struct temp_mq_list *) calloc (sizeof (*newp) + len, 1);
if (newp != NULL)
struct iovec iov[2];
iov[0].iov_base = (char *) name;
iov[0].iov_len = strlen (name);
iov[1].iov_base = (char *) "\n";
iov[1].iov_len = 1;
if (writev (temp_mq_fd, iov, 2) != iov[0].iov_len + 1)
printf ("Could not record temp mq filename %s\n", name);
}

/* Delete all temporary message queues. */
static void
do_cleanup (void)
{
if (lseek (temp_mq_fd, 0, SEEK_SET) != 0)
return;

FILE *f = fdopen (temp_mq_fd, "r");
if (f == NULL)
return;

char *line = NULL;
size_t n = 0;
ssize_t rets;
while ((rets = getline (&line, &n, f)) > 0)
{
memcpy (newp->name, name, len + 1);
if (temp_mq_list == NULL)
temp_mq_list = (struct temp_mq_list *) &newp->q;
else
insque (newp, temp_mq_list);
if (line[rets - 1] != '\n')
continue;

line[rets - 1] = '\0';
mq_unlink (line);
}
fclose (f);
}

/* Delete all temporary files. */
static void
delete_temp_mqs (void)
do_prepare (void)
{
while (temp_mq_list != NULL)
char name [] = "/tmp/tst-mqueueN.XXXXXX";
temp_mq_fd = mkstemp (name);
if (temp_mq_fd == -1)
{
mq_unlink (temp_mq_list->name);
temp_mq_list = (struct temp_mq_list *) temp_mq_list->q.q_forw;
printf ("Could not create temporary file %s: %m\n", name);
exit (1);
}
unlink (name);
}

#define CLEANUP_HANDLER delete_temp_mqs ()
#define PREPARE(argc, argv) do_prepare ()
#define CLEANUP_HANDLER do_cleanup ()
19 changes: 10 additions & 9 deletions rt/tst-mqueue1.c
Expand Up @@ -83,7 +83,7 @@ do_one_test (mqd_t q, const char *name, int nonblock)
result = 1;
}
else
result = check_attrs (&attr, nonblock, 0);
result |= check_attrs (&attr, nonblock, 0);

if (mq_receive (q, &v[0], 1, NULL) != -1)
{
Expand Down Expand Up @@ -156,7 +156,7 @@ do_one_test (mqd_t q, const char *name, int nonblock)
result = 1;
}
else
result = check_attrs (&attr, nonblock, 10);
result |= check_attrs (&attr, nonblock, 10);

pid_t pid = fork ();
if (pid == -1)
Expand Down Expand Up @@ -188,7 +188,7 @@ do_one_test (mqd_t q, const char *name, int nonblock)
result = 1;
}
else
result = check_attrs (&attr, nonblock, 10);
result |= check_attrs (&attr, nonblock, 10);

unsigned char vr[11] = { };
unsigned int prio;
Expand Down Expand Up @@ -272,7 +272,7 @@ do_one_test (mqd_t q, const char *name, int nonblock)
result = 1;
}
else
result = check_attrs (&attr, nonblock, 0);
result |= check_attrs (&attr, nonblock, 0);

if (mq_close (q) != 0)
{
Expand All @@ -284,9 +284,10 @@ do_one_test (mqd_t q, const char *name, int nonblock)
}

int status;
if (waitpid (pid, &status, 0) != pid)
if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid)
{
printf ("waitpid failed: %m\n");
kill (pid, SIGKILL);
result = 1;
}
else if (!WIFEXITED (status) || WEXITSTATUS (status))
Expand All @@ -302,7 +303,7 @@ do_one_test (mqd_t q, const char *name, int nonblock)
result = 1;
}
else
result = check_attrs (&attr, nonblock, 0);
result |= check_attrs (&attr, nonblock, 0);

return result;
}
Expand All @@ -313,8 +314,8 @@ do_test (void)
{
int result = 0;

char name[sizeof "/tst-mqueue-" + sizeof (pid_t) * 3];
snprintf (name, sizeof (name), "/tst-mqueue-%u", getpid ());
char name[sizeof "/tst-mqueue1-" + sizeof (pid_t) * 3];
snprintf (name, sizeof (name), "/tst-mqueue1-%u", getpid ());

struct mq_attr attr = { .mq_maxmsg = 10, .mq_msgsize = 1 };
mqd_t q = mq_open (name, O_CREAT | O_EXCL | O_WRONLY, 0600, &attr);
Expand All @@ -327,7 +328,7 @@ do_test (void)
else
add_temp_mq (name);

result = do_one_test (q, name, 0);
result |= do_one_test (q, name, 0);

mqd_t q2 = mq_open (name, O_WRONLY | O_NONBLOCK);
if (q2 == (mqd_t) -1)
Expand Down

0 comments on commit efa8adf

Please sign in to comment.