To further explain the simplicity of writing a cluster service using this framework you can look at the below attached icstest service. with this calling ics_test_print(char *string) will cause the string to be printed on node 3. -aneesh
Attachment:
icstest.svc
Description: Binary data
#include <linux/cluster.h> #include <cluster/nsc.h> #include <cluster/config.h> #include <cluster/ics/ics_private.h> #include <cluster/gen/ics_icstest_macros_gen.h> #include <cluster/gen/ics_icstest_protos_gen.h> int rics_print(clusternode_t node, int *rval, char *name, int namelen) { printk("Printing the message-> %s\n", name); return 0; } int __ics_test_print(clusternode_t node, char *string) { int ret; if (node == this_node) { rics_print(node, &ret, string, strlen(string)+1); } else { RICS_PRINT(node, &ret, string, strlen(string)+1); } return ret; } int ics_test_print(char *string) { return __ics_test_print(3, string); }
/* * ICSSIG client/server stub routines. * Copyright 2001 Compaq Computer 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, GOOD TITLE * or NON INFRINGEMENT. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Questions/Comments/Bugfixes to ci-linux-devel@xxxxxxxxxxxxxxxxxxxxx * */ #include <cluster/icsgen.h> cluster_svc_t cluster_icstest_svc; /* * Include prototypes, client and server stubs generated by icsgen. */ #include <cluster/gen/ics_icstest_protos_gen.h> #include <cluster/gen/icscli_icstest_gen.c> #include <cluster/gen/icssvr_icstest_gen.c> /* * Include the server tables and service registration generated by icsgen. */ #include <cluster/gen/icssvr_icstest_tables_gen.c> /* * Register ICSSIG components with CI. */ static int __init ci_init_icstest(void) { /* Register ICSSIG cluster service */ return register_cluster_svc(&cluster_icstest_svc, ics_default_chan, ics_icstest_svc_init); } /* XXX: There is currently no option to compile this as a module. */ module_init(ci_init_icstest)
-- Linux-cluster@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/linux-cluster