Re: [PATCH] opensm: event plig-in API fixed to compile with g++
On Wed, Jul 7, 2010 at 9:58 AM, Sasha Khapyorsky sas...@voltaire.com wrote: On 10:00 Tue 06 Jul , Roland Dreier wrote: Seems that anyone who cared could already easily write a tiny shim in C and then write the rest of their plugin in C++. Or are there deeper issues than names of methods? I think that it is likely deeper. For instance if C++ stuff will use OpenSM structures, functions, include files, etc.. So this will automatically will add some limitations for using normal C in OpenSM core code. Perhaps but are these significant ? AFAIK we been living with them since the early days of OpenSM. I highly suspect that all those requirements are resulted by using C++ in some third party's *proprietary* plugs. It's not just some third party's proprietary plugs. C++ use has been in open source in OpenFabrics for quite some time now in ibutils. Also, since extern C has been in the header files since the early days, there can be many out of tree uses in C++ code. Which is fine in general, but completely unrelated to OpenSM development - I don't think that we should care. IMHO if users want to use C++ with OpenSM related development then we should and need to care. -- Hal Sasha -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] opensm: event plig-in API fixed to compile with g++
On 10:00 Tue 06 Jul , Roland Dreier wrote: Seems that anyone who cared could already easily write a tiny shim in C and then write the rest of their plugin in C++. Or are there deeper issues than names of methods? I think that it is likely deeper. For instance if C++ stuff will use OpenSM structures, functions, include files, etc.. So this will automatically will add some limitations for using normal C in OpenSM core code. I highly suspect that all those requirements are resulted by using C++ in some third party's *proprietary* plugs. Which is fine in general, but completely unrelated to OpenSM development - I don't think that we should care. Sasha -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] opensm: event plig-in API fixed to compile with g++
FWIW, I agree with Hal. Support for external plug-ins written in C++ seems desirable. Seems that anyone who cared could already easily write a tiny shim in C and then write the rest of their plugin in C++. Or are there deeper issues than names of methods? - R. -- Roland Dreier rola...@cisco.com || For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/index.html -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] opensm: event plig-in API fixed to compile with g++
On Mon, 5 Jul 2010 11:41:44 -0700 Sasha Khapyorsky sas...@voltaire.com wrote: On 14:30 Mon 05 Jul , Hal Rosenstock wrote: On Mon, Jul 5, 2010 at 2:11 PM, Sasha Khapyorsky sas...@voltaire.com wrote: On 11:10 Thu 24 Jun , Yevgeny Kliteynik wrote: Event API should have been able to be used by libraries written both in C and C++. I don't know about such requirement. Are you saying it isn't a valid requirement to allow OpenSM plugins to be C++ based ? If so, why not ? I'm saying that there is no requirement for plugin API to support C++ - obviously (following method names) plugin API was never developed for using it in C++. Actually IMO this is not correct. The use of delete was introduced by commit a5963f93fa3d4514cc526e4ad029b036724b8167. I was at fault to not have objected back then. The use of extern C in all of the header files below implies a desire to support C++. 10:28:14 pwd; grep BEGIN_C_DECLS extern * /home/weiny2/OpenIB/git-trees/management/opensm/include/opensm osm_attrib_req.h:# define BEGIN_C_DECLS extern C { osm_base.h:# define BEGIN_C_DECLS extern C { osm_console.h:# define BEGIN_C_DECLS extern C { osm_console_io.h:# define BEGIN_C_DECLS extern C { osm_db.h:# define BEGIN_C_DECLS extern C { osm_db_pack.h:# define BEGIN_C_DECLS extern C { osm_event_plugin.h:# define BEGIN_C_DECLS extern C { osm_helper.h:# define BEGIN_C_DECLS extern C { osm_inform.h:# define BEGIN_C_DECLS extern C { osm_lid_mgr.h:# define BEGIN_C_DECLS extern C { osm_log.h:# define BEGIN_C_DECLS extern C { osm_mad_pool.h:# define BEGIN_C_DECLS extern C { osm_madw.h:# define BEGIN_C_DECLS extern C { osm_mcast_tbl.h:# define BEGIN_C_DECLS extern C { osm_mcm_port.h:# define BEGIN_C_DECLS extern C { osm_msgdef.h:# define BEGIN_C_DECLS extern C { osm_mtree.h:# define BEGIN_C_DECLS extern C { osm_multicast.h:# define BEGIN_C_DECLS extern C { osm_node.h:# define BEGIN_C_DECLS extern C { osm_opensm.h:# define BEGIN_C_DECLS extern C { osm_partition.h:# define BEGIN_C_DECLS extern C { osm_path.h:# define BEGIN_C_DECLS extern C { osm_perfmgr_db.h:# define BEGIN_C_DECLS extern C { osm_pkey.h:# define BEGIN_C_DECLS extern C { osm_port.h:# define BEGIN_C_DECLS extern C { osm_port_profile.h:# define BEGIN_C_DECLS extern C { osm_prefix_route.h:# define BEGIN_C_DECLS extern C { osm_remote_sm.h:# define BEGIN_C_DECLS extern C { osm_router.h:# define BEGIN_C_DECLS extern C { osm_sa.h:# define BEGIN_C_DECLS extern C { osm_sa_mad_ctrl.h:# define BEGIN_C_DECLS extern C { osm_service.h:# define BEGIN_C_DECLS extern C { osm_sm.h:# define BEGIN_C_DECLS extern C { osm_sm.h.orig:# define BEGIN_C_DECLS extern C { osm_sm_mad_ctrl.h:# define BEGIN_C_DECLS extern C { osm_stats.h:# define BEGIN_C_DECLS extern C { osm_subnet.h:# define BEGIN_C_DECLS extern C { osm_subnet.h.orig:# define BEGIN_C_DECLS extern C { osm_switch.h:# define BEGIN_C_DECLS extern C { osm_ucast_cache.h:# define BEGIN_C_DECLS extern C { osm_ucast_mgr.h:# define BEGIN_C_DECLS extern C { osm_vl15intf.h:# define BEGIN_C_DECLS extern C { st.h:# define BEGIN_C_DECLS extern C { Ira Why not is another question - for instance in order to not deal with C/C++ compatibility issues (such as castings, function names limitation, linking mess, etc.) Sasha -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://*vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] opensm: event plig-in API fixed to compile with g++
On 07-Jul-10 12:03 AM, Ira Weiny wrote: On Mon, 5 Jul 2010 11:41:44 -0700 Sasha Khapyorskysas...@voltaire.com wrote: On 14:30 Mon 05 Jul , Hal Rosenstock wrote: On Mon, Jul 5, 2010 at 2:11 PM, Sasha Khapyorskysas...@voltaire.com wrote: On 11:10 Thu 24 Jun , Yevgeny Kliteynik wrote: Event API should have been able to be used by libraries written both in C and C++. I don't know about such requirement. Are you saying it isn't a valid requirement to allow OpenSM plugins to be C++ based ? If so, why not ? I'm saying that there is no requirement for plugin API to support C++ - obviously (following method names) plugin API was never developed for using it in C++. Actually IMO this is not correct. The use of delete was introduced by commit a5963f93fa3d4514cc526e4ad029b036724b8167. I was at fault to not have objected back then. The use of extern C in all of the header files below implies a desire to support C++. Couldn't agree more. -- Yevgeny 10:28:14 pwd; grep BEGIN_C_DECLS extern * /home/weiny2/OpenIB/git-trees/management/opensm/include/opensm osm_attrib_req.h:# define BEGIN_C_DECLS extern C { osm_base.h:# define BEGIN_C_DECLS extern C { osm_console.h:# define BEGIN_C_DECLS extern C { osm_console_io.h:# define BEGIN_C_DECLS extern C { osm_db.h:# define BEGIN_C_DECLS extern C { osm_db_pack.h:# define BEGIN_C_DECLS extern C { osm_event_plugin.h:# define BEGIN_C_DECLS extern C { osm_helper.h:# define BEGIN_C_DECLS extern C { osm_inform.h:# define BEGIN_C_DECLS extern C { osm_lid_mgr.h:# define BEGIN_C_DECLS extern C { osm_log.h:# define BEGIN_C_DECLS extern C { osm_mad_pool.h:# define BEGIN_C_DECLS extern C { osm_madw.h:# define BEGIN_C_DECLS extern C { osm_mcast_tbl.h:# define BEGIN_C_DECLS extern C { osm_mcm_port.h:# define BEGIN_C_DECLS extern C { osm_msgdef.h:# define BEGIN_C_DECLS extern C { osm_mtree.h:# define BEGIN_C_DECLS extern C { osm_multicast.h:# define BEGIN_C_DECLS extern C { osm_node.h:# define BEGIN_C_DECLS extern C { osm_opensm.h:# define BEGIN_C_DECLS extern C { osm_partition.h:# define BEGIN_C_DECLS extern C { osm_path.h:# define BEGIN_C_DECLS extern C { osm_perfmgr_db.h:# define BEGIN_C_DECLS extern C { osm_pkey.h:# define BEGIN_C_DECLS extern C { osm_port.h:# define BEGIN_C_DECLS extern C { osm_port_profile.h:# define BEGIN_C_DECLS extern C { osm_prefix_route.h:# define BEGIN_C_DECLS extern C { osm_remote_sm.h:# define BEGIN_C_DECLS extern C { osm_router.h:# define BEGIN_C_DECLS extern C { osm_sa.h:# define BEGIN_C_DECLS extern C { osm_sa_mad_ctrl.h:# define BEGIN_C_DECLS extern C { osm_service.h:# define BEGIN_C_DECLS extern C { osm_sm.h:# define BEGIN_C_DECLS extern C { osm_sm.h.orig:# define BEGIN_C_DECLS extern C { osm_sm_mad_ctrl.h:# define BEGIN_C_DECLS extern C { osm_stats.h:# define BEGIN_C_DECLS extern C { osm_subnet.h:# define BEGIN_C_DECLS extern C { osm_subnet.h.orig:# define BEGIN_C_DECLS extern C { osm_switch.h:# define BEGIN_C_DECLS extern C { osm_ucast_cache.h:# define BEGIN_C_DECLS extern C { osm_ucast_mgr.h:# define BEGIN_C_DECLS extern C { osm_vl15intf.h:# define BEGIN_C_DECLS extern C { st.h:# define BEGIN_C_DECLS extern C { Ira Why not is another question - for instance in order to not deal with C/C++ compatibility issues (such as castings, function names limitation, linking mess, etc.) Sasha -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://*vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] opensm: event plig-in API fixed to compile with g++
On 11:10 Thu 24 Jun , Yevgeny Kliteynik wrote: Event API should have been able to be used by libraries written both in C and C++. I don't know about such requirement. Personally I would strongly suggest to not mix things without really good reason - we discussed already about extern C removal in a future. The problem is, one of the fields in struct osm_event_plugin is called delete. Changing it to destroy and promoting the API version. This will break any existing plugin now (I know at least couple). I don't think that such change is appropriate for between RCs period. Sasha Signed-off-by: Yevgeny Kliteynik klit...@dev.mellanox.co.il --- opensm/include/opensm/osm_event_plugin.h|2 +- opensm/opensm/osm_event_plugin.c|4 ++-- opensm/osmeventplugin/libosmeventplugin.ver |2 +- opensm/osmeventplugin/src/osmeventplugin.c |2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/opensm/include/opensm/osm_event_plugin.h b/opensm/include/opensm/osm_event_plugin.h index 0b3464e..aa3fed4 100644 --- a/opensm/include/opensm/osm_event_plugin.h +++ b/opensm/include/opensm/osm_event_plugin.h @@ -145,7 +145,7 @@ typedef struct osm_api_ps_event { typedef struct osm_event_plugin { const char *osm_version; void *(*create) (struct osm_opensm *osm); - void (*delete) (void *plugin_data); + void (*destroy) (void *plugin_data); void (*report) (void *plugin_data, osm_epi_event_id_t event_id, void *event_data); } osm_event_plugin_t; diff --git a/opensm/opensm/osm_event_plugin.c b/opensm/opensm/osm_event_plugin.c index 2d67065..7f61960 100644 --- a/opensm/opensm/osm_event_plugin.c +++ b/opensm/opensm/osm_event_plugin.c @@ -141,8 +141,8 @@ DLOPENFAIL: void osm_epi_destroy(osm_epi_plugin_t * plugin) { if (plugin) { - if (plugin-impl-delete) - plugin-impl-delete(plugin-plugin_data); + if (plugin-impl-destroy) + plugin-impl-destroy(plugin-plugin_data); dlclose(plugin-handle); free(plugin-plugin_name); free(plugin); diff --git a/opensm/osmeventplugin/libosmeventplugin.ver b/opensm/osmeventplugin/libosmeventplugin.ver index f755ff6..0c3a85b 100644 --- a/opensm/osmeventplugin/libosmeventplugin.ver +++ b/opensm/osmeventplugin/libosmeventplugin.ver @@ -6,4 +6,4 @@ # API_REV - advance on any added API # RUNNING_REV - advance any change to the vendor files # AGE - number of backward versions the API still supports -LIBVERSION=1:0:0 +LIBVERSION=2:0:0 diff --git a/opensm/osmeventplugin/src/osmeventplugin.c b/opensm/osmeventplugin/src/osmeventplugin.c index f40f7fe..a82be07 100644 --- a/opensm/osmeventplugin/src/osmeventplugin.c +++ b/opensm/osmeventplugin/src/osmeventplugin.c @@ -207,6 +207,6 @@ static void report(void *_log, osm_epi_event_id_t event_id, void *event_data) osm_event_plugin_t osm_event_plugin = { osm_version:OSM_VERSION, create:construct, - delete:destroy, + destroy:destroy, report:report }; -- 1.5.1.4 -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] opensm: event plig-in API fixed to compile with g++
On Mon, Jul 5, 2010 at 2:11 PM, Sasha Khapyorsky sas...@voltaire.com wrote: On 11:10 Thu 24 Jun , Yevgeny Kliteynik wrote: Event API should have been able to be used by libraries written both in C and C++. I don't know about such requirement. Are you saying it isn't a valid requirement to allow OpenSM plugins to be C++ based ? If so, why not ? -- Hal -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] opensm: event plig-in API fixed to compile with g++
On 14:30 Mon 05 Jul , Hal Rosenstock wrote: On Mon, Jul 5, 2010 at 2:11 PM, Sasha Khapyorsky sas...@voltaire.com wrote: On 11:10 Thu 24 Jun , Yevgeny Kliteynik wrote: Event API should have been able to be used by libraries written both in C and C++. I don't know about such requirement. Are you saying it isn't a valid requirement to allow OpenSM plugins to be C++ based ? If so, why not ? I'm saying that there is no requirement for plugin API to support C++ - obviously (following method names) plugin API was never developed for using it in C++. Why not is another question - for instance in order to not deal with C/C++ compatibility issues (such as castings, function names limitation, linking mess, etc.) Sasha -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] opensm: event plig-in API fixed to compile with g++
On Mon, Jul 5, 2010 at 6:52 PM, Sasha Khapyorsky sas...@voltaire.com wrote: On 14:49 Mon 05 Jul , Hal Rosenstock wrote: Seems to me like being able to build plugins in C++ would be very useful For what it should be useful? Any example? Any management plug in application. and that the remaining issues to accomplish it seem relatively minor. Are you opposed to moving in this direction ? OpenSM is written in C, not C++, I'm pretty fine with it and don't see any reason to get C++ direction. That's OpenSM but why limit plug in writers to C ? -- Hal Sasha -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] opensm: event plig-in API fixed to compile with g++
Event API should have been able to be used by libraries written both in C and C++. The problem is, one of the fields in struct osm_event_plugin is called delete. Changing it to destroy and promoting the API version. Signed-off-by: Yevgeny Kliteynik klit...@dev.mellanox.co.il --- opensm/include/opensm/osm_event_plugin.h|2 +- opensm/opensm/osm_event_plugin.c|4 ++-- opensm/osmeventplugin/libosmeventplugin.ver |2 +- opensm/osmeventplugin/src/osmeventplugin.c |2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/opensm/include/opensm/osm_event_plugin.h b/opensm/include/opensm/osm_event_plugin.h index 0b3464e..aa3fed4 100644 --- a/opensm/include/opensm/osm_event_plugin.h +++ b/opensm/include/opensm/osm_event_plugin.h @@ -145,7 +145,7 @@ typedef struct osm_api_ps_event { typedef struct osm_event_plugin { const char *osm_version; void *(*create) (struct osm_opensm *osm); - void (*delete) (void *plugin_data); + void (*destroy) (void *plugin_data); void (*report) (void *plugin_data, osm_epi_event_id_t event_id, void *event_data); } osm_event_plugin_t; diff --git a/opensm/opensm/osm_event_plugin.c b/opensm/opensm/osm_event_plugin.c index 2d67065..7f61960 100644 --- a/opensm/opensm/osm_event_plugin.c +++ b/opensm/opensm/osm_event_plugin.c @@ -141,8 +141,8 @@ DLOPENFAIL: void osm_epi_destroy(osm_epi_plugin_t * plugin) { if (plugin) { - if (plugin-impl-delete) - plugin-impl-delete(plugin-plugin_data); + if (plugin-impl-destroy) + plugin-impl-destroy(plugin-plugin_data); dlclose(plugin-handle); free(plugin-plugin_name); free(plugin); diff --git a/opensm/osmeventplugin/libosmeventplugin.ver b/opensm/osmeventplugin/libosmeventplugin.ver index f755ff6..0c3a85b 100644 --- a/opensm/osmeventplugin/libosmeventplugin.ver +++ b/opensm/osmeventplugin/libosmeventplugin.ver @@ -6,4 +6,4 @@ # API_REV - advance on any added API # RUNNING_REV - advance any change to the vendor files # AGE - number of backward versions the API still supports -LIBVERSION=1:0:0 +LIBVERSION=2:0:0 diff --git a/opensm/osmeventplugin/src/osmeventplugin.c b/opensm/osmeventplugin/src/osmeventplugin.c index f40f7fe..a82be07 100644 --- a/opensm/osmeventplugin/src/osmeventplugin.c +++ b/opensm/osmeventplugin/src/osmeventplugin.c @@ -207,6 +207,6 @@ static void report(void *_log, osm_epi_event_id_t event_id, void *event_data) osm_event_plugin_t osm_event_plugin = { osm_version:OSM_VERSION, create:construct, - delete:destroy, + destroy:destroy, report:report }; -- 1.5.1.4 -- To unsubscribe from this list: send the line unsubscribe linux-rdma in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html