From: Aravinda Prasad <aravinda@linux.vnet.ibm.com>
To: kumagai-atsushi@mxc.nes.nec.co.jp, kexec@lists.infradead.org
Cc: LChouinard@s2sys.com, mahesh@linux.vnet.ibm.com,
tachibana@mxm.nes.nec.co.jp, ananth@in.ibm.com,
buendgen@de.ibm.com
Subject: [PATCH v2 1/7] Initialize and setup eppic
Date: Thu, 08 Nov 2012 19:08:04 +0530 [thread overview]
Message-ID: <20121108133804.28410.99166.stgit@aravinda> (raw)
In-Reply-To: <20121108133554.28410.99763.stgit@aravinda>
This patch contains routines which initialize eppic and register call
back function which will be called whenever a new eppic macro is loaded
using eppic_load() API. The registered call back function executes the
eppic macro as soon as it is loaded.
The -ltinfo is included in LIBS in the Makefile, because eppic
currently calls few functions in libtinfo and the compiler complains
about it, if not included. I think the paths where libeppic calls
libtinfo functions are not exercised by makedumpfile.
Including -ltinfo will increase the size of makedumpfile static
version
TODO:
- Check out a way to get rid of -ltinfo
Signed-off-by: Aravinda Prasad <aravinda@linux.vnet.ibm.com>
---
Makefile | 7 ++++
extension_eppic.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
extension_eppic.h | 23 +++++++++++++++
3 files changed, 114 insertions(+), 0 deletions(-)
create mode 100644 extension_eppic.c
create mode 100644 extension_eppic.h
diff --git a/Makefile b/Makefile
index d5fc09e..3ac8e63 100644
--- a/Makefile
+++ b/Makefile
@@ -55,6 +55,13 @@ LIBS := -llzo2 $(LIBS)
CFLAGS += -DUSELZO
endif
+ifeq ($(EPPIC), on)
+LIBS := -leppic -ltinfo $(LIBS)
+CFLAGS += -DEPPIC
+SRC_PART += extension_eppic.c
+OBJ_PART += extension_eppic.o
+endif
+
all: makedumpfile
$(OBJ_PART): $(SRC_PART)
diff --git a/extension_eppic.c b/extension_eppic.c
new file mode 100644
index 0000000..fc47b1f
--- /dev/null
+++ b/extension_eppic.c
@@ -0,0 +1,84 @@
+/*
+ * extension_eppic.c
+ *
+ * Created by: Aravinda Prasad <aravinda@linux.vnet.ibm.com>
+ *
+ * Copyright (C) 2012 IBM Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include "extension_eppic.h"
+
+/*
+ * Most of the functions included in this file performs similar
+ * functionality as in the applications/crash/eppic.c file part of
+ * eppic, but uses DWARF instead of gdb. Few of the functions are
+ * reused directly which are acknowledged in the comment before the
+ * function.
+ */
+
+/*
+ * This is the call back function called when a new eppic macro is
+ * loaded. This will execute the loaded eppic macro.
+ *
+ * "fname" is considered as the entry point of an eppic macro only if
+ * the following functions are defined:
+ *
+ * fname_help()
+ * fname_usage()
+ *
+ * These functions have no relevance in makedumpfile context as
+ * makedumpfile automatically executes the eppic macro by calling the
+ * entry point and user will not have any option to execute the usage
+ * or help functions. However they are required to identify the entry
+ * points in the eppic macro.
+ */
+void
+reg_callback(char *name, int load)
+{
+ char fname[MAX_SYMNAMELEN];
+
+ /* Nothing to process for unload request */
+ if (!load)
+ return;
+
+ snprintf(fname, sizeof(fname), "%s_help", name);
+ if (eppic_chkfname(fname, 0)) {
+ snprintf(fname, sizeof(fname), "%s_usage", name);
+ if (eppic_chkfname(fname, 0))
+ eppic_cmd(name, NULL, 0);
+ }
+ return;
+}
+
+
+/* Initialize eppic */
+int
+eppic_init()
+{
+ if (eppic_open() >= 0) {
+
+ /* Register call back functions */
+ eppic_apiset(NULL, 3, sizeof(long), 0);
+
+ /* set the new function callback */
+ eppic_setcallback(reg_callback);
+
+ return 0;
+ }
+ return 1;
+}
+
diff --git a/extension_eppic.h b/extension_eppic.h
new file mode 100644
index 0000000..ca74ce4
--- /dev/null
+++ b/extension_eppic.h
@@ -0,0 +1,23 @@
+/*
+ * extension_eppic.h
+ *
+ * Created by: Aravinda Prasad <aravinda@linux.vnet.ibm.com>
+ *
+ * Copyright (C) 2012 IBM Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+#ifndef _EXTENSION_EPPIC_H
+#define _EXTENSION_EPPIC_H
+
+#include "eppic_api.h"
+
+#endif /* _EXTENSION_EPPIC_H */
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2012-11-08 13:38 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-08 13:37 [PATCH v2 0/7] makedumpfile security key filtering with eppic Aravinda Prasad
2012-11-08 13:38 ` Aravinda Prasad [this message]
2012-11-15 16:04 ` [PATCH v2 1/7] Initialize and setup eppic Vivek Goyal
2012-11-16 9:43 ` Aravinda Prasad
2012-11-08 13:38 ` [PATCH v2 2/7] makedumpfile and eppic interface layer Aravinda Prasad
2012-11-08 13:38 ` [PATCH v2 3/7] Eppic call back functions to query a dump image Aravinda Prasad
2012-11-08 13:38 ` [PATCH v2 4/7] Implement apigetctype call back function Aravinda Prasad
2012-11-08 13:39 ` [PATCH v2 5/7] Implement apimember and apigetrtype call back functions Aravinda Prasad
2012-11-08 13:39 ` [PATCH v2 6/7] Extend eppic built-in functions to include memset function Aravinda Prasad
2012-11-08 13:39 ` [PATCH v2 7/7] Support fully typed symbol access mode Aravinda Prasad
2012-11-14 1:15 ` [PATCH v2 0/7] makedumpfile security key filtering with eppic Atsushi Kumagai
2012-11-14 14:54 ` Vivek Goyal
2012-11-14 17:06 ` Aravinda Prasad
2012-11-14 17:53 ` Vivek Goyal
2012-11-15 12:50 ` Aravinda Prasad
2012-11-15 14:27 ` Dave Anderson
2012-11-15 15:55 ` Vivek Goyal
2012-11-16 9:52 ` Aravinda Prasad
2012-11-16 14:36 ` Vivek Goyal
2012-11-20 9:47 ` Atsushi Kumagai
2012-11-21 7:19 ` Aravinda Prasad
2012-11-21 13:57 ` Vivek Goyal
2012-11-22 17:14 ` Aravinda Prasad
2012-11-26 14:04 ` Vivek Goyal
2012-12-03 6:02 ` Aravinda Prasad
2012-12-03 13:20 ` Vivek Goyal
2012-12-03 14:35 ` Aravinda Prasad
2012-12-03 18:40 ` Vivek Goyal
2012-12-04 8:36 ` Atsushi Kumagai
2012-12-04 8:56 ` Aravinda Prasad
2012-12-06 15:26 ` Dave Anderson
2012-12-07 6:05 ` Aravinda Prasad
2012-12-07 13:46 ` Luc Chouinard
2012-12-07 21:59 ` Vivek Goyal
2012-12-10 7:32 ` Aravinda Prasad
2012-12-10 11:35 ` Aravinda Prasad
2012-11-16 9:49 ` Aravinda Prasad
2012-11-15 15:49 ` Vivek Goyal
2012-11-16 11:10 ` Aravinda Prasad
2012-11-16 14:59 ` Vivek Goyal
2012-11-14 20:15 ` Vivek Goyal
2012-11-15 12:55 ` Aravinda Prasad
2012-11-14 20:21 ` Dave Anderson
2012-11-15 13:27 ` Aravinda Prasad
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121108133804.28410.99166.stgit@aravinda \
--to=aravinda@linux.vnet.ibm.com \
--cc=LChouinard@s2sys.com \
--cc=ananth@in.ibm.com \
--cc=buendgen@de.ibm.com \
--cc=kexec@lists.infradead.org \
--cc=kumagai-atsushi@mxc.nes.nec.co.jp \
--cc=mahesh@linux.vnet.ibm.com \
--cc=tachibana@mxm.nes.nec.co.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.