svn commit: r247217 - user/dchagin/lemul/sys/compat/linux

Dmitry Chagin dchagin at FreeBSD.org
Sun Feb 24 11:27:19 UTC 2013


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)
 


More information about the svn-src-user mailing list