Version: 1
-Previous: 4718ae6bd521d6f5cda1db2afd0ca65d478466e6
+Previous: fda1f48be7851f6416e2477a4d9f581f59ed53e9
Head: 0a83fa0154a0d56f255abe95cc31f54661b2c6eb
Applied:
- daemon: 32ca7dbd7bb04dabb504faa3ffe319e5f965d716
cfg: 91fd5f444591ae8691a5bcf155467d0e7c493963
log: 1b4a23934cccf05a770fec86f6422788a5a52ee9
rel-1.0.2: 0a83fa0154a0d56f255abe95cc31f54661b2c6eb
+++ /dev/null
-Bottom: 7ba4916f6ef28f711b42fb3c392b5c0f267a8104
-Top: fe525ce7184567022966920e612b61d5545b2bc9
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2010-07-23 12:12:45 -0700
-
-ibacm: daemonize ib_acm service
-
-Allow ib_acm to run as a daemon instead of just a process.
-
-Signed-off-by: Sean Hefty <sean.hefty@intel.com>
-
-
----
-
-diff --git a/src/acm.c b/src/acm.c
-index 7cd60a4..8b09453 100644
---- a/src/acm.c
-+++ b/src/acm.c
-@@ -32,6 +32,7 @@
- #include <string.h>
- #include <osd.h>
- #include <arpa/inet.h>
-+#include <sys/stat.h>
- #include <infiniband/acm.h>
- #include <infiniband/umad.h>
- #include <infiniband/verbs.h>
-@@ -2611,11 +2612,53 @@ static FILE *acm_open_log(void)
- return f;
- }
-
-+static void daemonize(void)
-+{
-+ pid_t pid, sid;
-+
-+ pid = fork();
-+ if (pid)
-+ exit(pid < 0);
-+
-+ umask(0);
-+
-+ sid = setsid();
-+ if (sid < 0)
-+ exit(1);
-+
-+ if (chdir("/"))
-+ exit(1);
-+
-+ freopen("/dev/null", "r", stdin);
-+ freopen("/dev/null", "w", stdout);
-+ freopen("/dev/null", "w", stderr);
-+}
-+
-+static void show_usage(char *program)
-+{
-+ printf("usage: %s\n", program);
-+ printf(" [-D] - run as a daemon\n");
-+}
-+
- int CDECL_FUNC main(int argc, char **argv)
- {
- struct ibv_device **ibdev;
- int dev_cnt;
-- int i;
-+ int op, i, daemon = 0;
-+
-+ while ((op = getopt(argc, argv, "D")) != -1) {
-+ switch (op) {
-+ case 'D':
-+ daemon = 1;
-+ break;
-+ default:
-+ show_usage(argv[0]);
-+ exit(1);
-+ }
-+ }
-+
-+ if (daemon)
-+ daemonize();
-
- if (osd_init())
- return -1;