Mpersify RTC_* ioctl parser

* defs.h (rtc_ioctl): Remove.
* rtc.c: Mpersify struct rtc_pll_info and ioctl numbers.
(rtc_ioctl): Mpersify.
* NEWS: Mention this enhancement.
diff --git a/NEWS b/NEWS
index 6ce1ba5..3d3a00b 100644
--- a/NEWS
+++ b/NEWS
@@ -12,7 +12,7 @@
   * Implemented dumping of preadv, preadv2, pwritev, pwritev2, and vmsplice
     syscalls.
   * Implemented decoding of BTRFS_* and UFFDIO_* ioctl commands.
-  * Enhanced decoding of VIDIOC_* ioctl commands.
+  * Enhanced decoding of RTC_* and VIDIOC_* ioctl commands.
   * Enhanced decoding of fstatfs, fstatfs64, get_mempolicy, getdents,
     getdents64, getgroups, getpriority, kill, mbind, migrate_pages, mknod,
     mknodat, personality, poll, ppoll, quotactl, rt_sigpending,
diff --git a/defs.h b/defs.h
index 49c15df..ceb535a 100644
--- a/defs.h
+++ b/defs.h
@@ -665,7 +665,6 @@
 extern int loop_ioctl(struct tcb *, const unsigned int, long);
 extern int mtd_ioctl(struct tcb *, const unsigned int, long);
 extern int ptp_ioctl(struct tcb *, const unsigned int, long);
-extern int rtc_ioctl(struct tcb *, const unsigned int, long);
 extern int scsi_ioctl(struct tcb *, const unsigned int, long);
 extern int sock_ioctl(struct tcb *, const unsigned int, long);
 extern int term_ioctl(struct tcb *, const unsigned int, long);
diff --git a/rtc.c b/rtc.c
index f7ea81b..7f123e4 100644
--- a/rtc.c
+++ b/rtc.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2004 Ulrich Drepper <drepper@redhat.com>
- * Copyright (c) 2004 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2004-2016 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,9 +27,16 @@
  */
 
 #include "defs.h"
+
+#include DEF_MPERS_TYPE(struct_rtc_pll_info)
+
 #include <linux/ioctl.h>
 #include <linux/rtc.h>
 
+typedef struct rtc_pll_info struct_rtc_pll_info;
+
+#include MPERS_DEFS
+
 static void
 print_rtc_time(struct tcb *tcp, const struct rtc_time *rt)
 {
@@ -68,17 +75,17 @@
 static void
 decode_rtc_pll_info(struct tcb *tcp, const long addr)
 {
-	struct rtc_pll_info pll;
+	struct_rtc_pll_info pll;
 
 	if (!umove_or_printaddr(tcp, addr, &pll))
 		tprintf("{pll_ctrl=%d, pll_value=%d, pll_max=%d, pll_min=%d"
 			", pll_posmult=%d, pll_negmult=%d, pll_clock=%ld}",
 			pll.pll_ctrl, pll.pll_value, pll.pll_max, pll.pll_min,
-			pll.pll_posmult, pll.pll_negmult, pll.pll_clock);
+			pll.pll_posmult, pll.pll_negmult, (long) pll.pll_clock);
 }
 
-int
-rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
+MPERS_PRINTER_DECL(int, rtc_ioctl, struct tcb *tcp,
+		   const unsigned int code, const long arg)
 {
 	switch (code) {
 	case RTC_ALM_READ: