From 016eb60b39023ad140a7b381a4f501f12859252a Mon Sep 17 00:00:00 2001 From: sangorrin Date: Thu, 26 Jun 2008 10:43:15 +0000 Subject: [PATCH] implementation and test for the fosagetcpuresourceid git-svn-id: http://www.frescor.org/private/svn/frescor/fosa/trunk@1293 35b4ef3e-fd22-0410-ab77-dab3279adceb --- src_marte_os/fosa_platform_values.c | 130 ++++++++++++++++++ .../tests/test_platform_values/Makefile | 4 + .../tests/test_platform_values/Makefile.omk | 8 ++ .../test_fosa_get_cpu_resource_id.c | 70 ++++++++++ 4 files changed, 212 insertions(+) create mode 100644 src_marte_os/fosa_platform_values.c create mode 100644 src_marte_os/tests/test_platform_values/Makefile create mode 100644 src_marte_os/tests/test_platform_values/Makefile.omk create mode 100644 src_marte_os/tests/test_platform_values/test_fosa_get_cpu_resource_id.c diff --git a/src_marte_os/fosa_platform_values.c b/src_marte_os/fosa_platform_values.c new file mode 100644 index 0000000..5da526e --- /dev/null +++ b/src_marte_os/fosa_platform_values.c @@ -0,0 +1,130 @@ +// ----------------------------------------------------------------------- +// Copyright (C) 2006 - 2008 FRESCOR consortium partners: +// +// Universidad de Cantabria, SPAIN +// University of York, UK +// Scuola Superiore Sant'Anna, ITALY +// Kaiserslautern University, GERMANY +// Univ. Politécnica Valencia, SPAIN +// Czech Technical University in Prague, CZECH REPUBLIC +// ENEA SWEDEN +// Thales Communication S.A. FRANCE +// Visual Tools S.A. SPAIN +// Rapita Systems Ltd UK +// Evidence ITALY +// +// See http://www.frescor.org for a link to partners' websites +// +// FRESCOR project (FP6/2005/IST/5-034026) is funded +// in part by the European Union Sixth Framework Programme +// The European Union is not liable of any use that may be +// made of this code. +// +// +// based on previous work (FSF) done in the FIRST project +// +// Copyright (C) 2005 Mälardalen University, SWEDEN +// Scuola Superiore S.Anna, ITALY +// Universidad de Cantabria, SPAIN +// University of York, UK +// +// FSF API web pages: http://marte.unican.es/fsf/docs +// http://shark.sssup.it/contrib/first/docs/ +// +// This file is part of FOSA (Frsh Operating System Adaption) +// +// FOSA is free software; you can redistribute it and/or modify it +// under terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) any +// later version. FOSA 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. You should have received a +// copy of the GNU General Public License along with FOSA; see file +// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, +// Cambridge, MA 02139, USA. +// +// As a special exception, including FOSA header files in a file, +// instantiating FOSA generics or templates, or linking other files +// with FOSA objects to produce an executable application, does not +// by itself cause the resulting executable application to be covered +// by the GNU General Public License. This exception does not +// however invalidate any other reasons why the executable file might be +// covered by the GNU Public License. +// ----------------------------------------------------------------------- +//fosa_time.h +//============================================== +// ******** ****** ******** ********** +// **///// /** ** **////// /** /** +// ** /** ** /** /** /** +// ******* /** ** /********* /********** +// **//// /** ** ////////** /**//////** +// ** /** ** /** /** /** +// ** /** ** ******** /** /** +// // /******/ //////// // // +// +// FOSA(Frescor Operating System Adaptation layer) +//================================================ +#include "fosa_platform_values.h" + +/** + * fosa_get_cpu_resource_id() + * + * Obtain the cpu resource id of the current node by making use of any + * mechanism that allows to distinguish between nodes (ie MAC addresses, + * configuration parameters, etc..) + */ + +#include +#include +#include +#include +#include +#include + +#define MAC_WIFI1 "00:0E:0C:5B:1D:BD" +#define MAC_WIFI2 "00:0E:0C:5B:1E:28" + +#define STATION_0 MAC_WIFI1 +#define STATION_1 MAC_WIFI2 + +#if 1 +#include +#define DEBUG(x,args...) printf("%s: " x, __func__ , ##args) +#else +#define DEBUG(x,args...) +#endif + +int fosa_get_cpu_resource_id(fosa_resource_id_t *cpu_id) +{ + int err, fd; + struct ether_addr mac, mac_tmp; + char mac_str[18]; + + fd = open("/dev/eth0", O_RDWR); + assert(fd != -1); + + err = ioctl(fd, ETH_HWADDR, mac.ether_addr_octet); + assert(err == 0); + + ether_ntoa (&mac, mac_str); + DEBUG("I am %s\n", mac_str); + + err = ether_aton(STATION_0, &mac_tmp); + assert(err == 0); + + if (memcmp(&mac_tmp, &mac, sizeof(mac)) == 0) { + DEBUG("STATION_0\n"); + *cpu_id = 0; + } + + err = ether_aton(STATION_1, &mac_tmp); + assert(err == 0); + + if (memcmp(&mac_tmp, &mac, sizeof(mac)) == 0) { + DEBUG("STATION_1\n"); + *cpu_id = 1; + } + + return 0; +} diff --git a/src_marte_os/tests/test_platform_values/Makefile b/src_marte_os/tests/test_platform_values/Makefile new file mode 100644 index 0000000..0884262 --- /dev/null +++ b/src_marte_os/tests/test_platform_values/Makefile @@ -0,0 +1,4 @@ +include ../../../config.mk +include ../../../rules.mk + + diff --git a/src_marte_os/tests/test_platform_values/Makefile.omk b/src_marte_os/tests/test_platform_values/Makefile.omk new file mode 100644 index 0000000..a02e70f --- /dev/null +++ b/src_marte_os/tests/test_platform_values/Makefile.omk @@ -0,0 +1,8 @@ +test_PROGRAMS:=$(basename $(notdir $(wildcard $(SOURCES_DIR)/*.c))) + +$(foreach t,$(test_PROGRAMS),\ +$(eval $(t)_SOURCES = $(t).c)\ +$(eval $(t)_LIBS = fosa m)\ +) + + diff --git a/src_marte_os/tests/test_platform_values/test_fosa_get_cpu_resource_id.c b/src_marte_os/tests/test_platform_values/test_fosa_get_cpu_resource_id.c new file mode 100644 index 0000000..0cc9c42 --- /dev/null +++ b/src_marte_os/tests/test_platform_values/test_fosa_get_cpu_resource_id.c @@ -0,0 +1,70 @@ +// ----------------------------------------------------------------------- +// Copyright (C) 2006 - 2008 FRESCOR consortium partners: +// +// Universidad de Cantabria, SPAIN +// University of York, UK +// Scuola Superiore Sant'Anna, ITALY +// Kaiserslautern University, GERMANY +// Univ. Politécnica Valencia, SPAIN +// Czech Technical University in Prague, CZECH REPUBLIC +// ENEA SWEDEN +// Thales Communication S.A. FRANCE +// Visual Tools S.A. SPAIN +// Rapita Systems Ltd UK +// Evidence ITALY +// +// See http://www.frescor.org for a link to partners' websites +// +// FRESCOR project (FP6/2005/IST/5-034026) is funded +// in part by the European Union Sixth Framework Programme +// The European Union is not liable of any use that may be +// made of this code. +// +// +// based on previous work (FSF) done in the FIRST project +// +// Copyright (C) 2005 Mälardalen University, SWEDEN +// Scuola Superiore S.Anna, ITALY +// Universidad de Cantabria, SPAIN +// University of York, UK +// +// FSF API web pages: http://marte.unican.es/fsf/docs +// http://shark.sssup.it/contrib/first/docs/ +// +// This file is part of FOSA (Frsh Operating System Adaption) +// +// FOSA is free software; you can redistribute it and/or modify it +// under terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) any +// later version. FOSA 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. You should have received a +// copy of the GNU General Public License along with FOSA; see file +// COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, +// Cambridge, MA 02139, USA. +// +// As a special exception, including FOSA header files in a file, +// instantiating FOSA generics or templates, or linking other files +// with FOSA objects to produce an executable application, does not +// by itself cause the resulting executable application to be covered +// by the GNU General Public License. This exception does not +// however invalidate any other reasons why the executable file might be +// covered by the GNU Public License. +// ----------------------------------------------------------------------- +#include +#include +#include "fosa.h" + +int main () { + + int ret; + fosa_resource_id_t cpu_id; + + ret = fosa_get_cpu_resource_id(&cpu_id); + assert (ret == 0); + + printf("CPU ID: %u\n", cpu_id); + + return 0; +} -- 2.39.2