From owner-svn-src-user@FreeBSD.ORG  Sun Feb 24 11:27:19 2013
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115])
 by hub.freebsd.org (Postfix) with ESMTP id 2FB9178A;
 Sun, 24 Feb 2013 11:27:19 +0000 (UTC)
 (envelope-from dchagin@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id E79571CF7;
 Sun, 24 Feb 2013 11:27:18 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1OBRIu4010891;
 Sun, 24 Feb 2013 11:27:18 GMT (envelope-from dchagin@svn.freebsd.org)
Received: (from dchagin@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1OBRIMb010889;
 Sun, 24 Feb 2013 11:27:18 GMT (envelope-from dchagin@svn.freebsd.org)
Message-Id: <201302241127.r1OBRIMb010889@svn.freebsd.org>
From: Dmitry Chagin <dchagin@FreeBSD.org>
Date: Sun, 24 Feb 2013 11:27:18 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r247217 - user/dchagin/lemul/sys/compat/linux
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 24 Feb 2013 11:27:19 -0000

Author: dchagin
Date: Sun Feb 24 11:27:18 2013
New Revision: 247217
URL: http://svnweb.freebsd.org/changeset/base/247217

Log:
  Add a siginfo_t conversion function.

Modified:
  user/dchagin/lemul/sys/compat/linux/linux_signal.c
  user/dchagin/lemul/sys/compat/linux/linux_signal.h

Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.c
==============================================================================
--- user/dchagin/lemul/sys/compat/linux/linux_signal.c	Sun Feb 24 11:24:08 2013	(r247216)
+++ user/dchagin/lemul/sys/compat/linux/linux_signal.c	Sun Feb 24 11:27:18 2013	(r247217)
@@ -644,33 +644,40 @@ void
 ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig)
 {
 
+	siginfo_to_lsiginfo(&ksi->ksi_info, lsi, sig);
+}
+
+void
+siginfo_to_lsiginfo(siginfo_t *si, l_siginfo_t *lsi, l_int sig)
+{
+
 	lsi->lsi_signo = sig;
-	lsi->lsi_code = ksi->ksi_code;
+	lsi->lsi_code = si->si_code;
 
 	switch (sig) {
 	case LINUX_SIGPOLL:
 		/* XXX si_fd? */
-		lsi->lsi_band = ksi->ksi_band;
+		lsi->lsi_band = si->si_band;
 		break;
 	case LINUX_SIGCHLD:
-		lsi->lsi_pid = ksi->ksi_pid;
-		lsi->lsi_uid = ksi->ksi_uid;
-		lsi->lsi_status = ksi->ksi_status;
+		lsi->lsi_pid = si->si_pid;
+		lsi->lsi_uid = si->si_uid;
+		lsi->lsi_status = si->si_status;
 		break;
 	case LINUX_SIGBUS:
 	case LINUX_SIGILL:
 	case LINUX_SIGFPE:
 	case LINUX_SIGSEGV:
-		lsi->lsi_addr = PTROUT(ksi->ksi_addr);
+		lsi->lsi_addr = PTROUT(si->si_addr);
 		break;
 	default:
 		/* XXX SI_TIMER etc... */
-		lsi->lsi_pid = ksi->ksi_pid;
-		lsi->lsi_uid = ksi->ksi_uid;
+		lsi->lsi_pid = si->si_pid;
+		lsi->lsi_uid = si->si_uid;
 		break;
 	}
 	if (sig >= LINUX_SIGRTMIN) {
-		lsi->lsi_int = ksi->ksi_info.si_value.sival_int;
-		lsi->lsi_ptr = PTROUT(ksi->ksi_info.si_value.sival_ptr);
+		lsi->lsi_int = si->si_value.sival_int;
+		lsi->lsi_ptr = PTROUT(si->si_value.sival_ptr);
 	}
 }

Modified: user/dchagin/lemul/sys/compat/linux/linux_signal.h
==============================================================================
--- user/dchagin/lemul/sys/compat/linux/linux_signal.h	Sun Feb 24 11:24:08 2013	(r247216)
+++ user/dchagin/lemul/sys/compat/linux/linux_signal.h	Sun Feb 24 11:27:18 2013	(r247217)
@@ -40,6 +40,7 @@ void linux_to_bsd_sigset(l_sigset_t *, s
 void bsd_to_linux_sigset(sigset_t *, l_sigset_t *);
 int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *);
 void ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig);
+void siginfo_to_lsiginfo(siginfo_t *si, l_siginfo_t *lsi, l_int sig);
 
 #define LINUX_SIG_VALID(sig)	((sig) <= LINUX_NSIG && (sig) > 0)