From 7c7c7f3e6640e709c31b9e712b8e6340e34d3bb5 Mon Sep 17 00:00:00 2001 From: Jacques Supcik Date: Wed, 11 May 2022 15:14:01 +0200 Subject: [PATCH] new structure + serie 6 --- src/{ => 01_environment}/Makefile | 0 src/{ => 01_environment}/appl.mk | 0 .../backtrace/.vscode/launch.json | 0 .../backtrace/.vscode/tasks.json | 0 src/{ => 01_environment}/backtrace/Makefile | 0 src/{ => 01_environment}/backtrace/main.c | 0 .../core_dumps/.vscode/launch.json | 0 .../core_dumps/.vscode/tasks.json | 0 src/{ => 01_environment}/core_dumps/Makefile | 0 .../core_dumps/core_dumps.c | 0 .../daemon/.vscode/launch.json | 0 .../daemon/.vscode/tasks.json | 0 src/{ => 01_environment}/daemon/Makefile | 0 src/{ => 01_environment}/daemon/S60appl | 0 src/{ => 01_environment}/daemon/daemon.c | 0 src/{ => 01_environment}/dot-vscode/deploy.sh | 0 .../dot-vscode/launch.json | 0 .../dot-vscode/launch.json_presque | 0 .../dot-vscode/tasks.json | 0 .../fibonacci/.vscode/launch.json | 0 .../fibonacci/.vscode/tasks.json | 0 src/{ => 01_environment}/fibonacci/Makefile | 0 .../fibonacci/fibonacci.c | 0 .../memory_leaks/.vscode/launch.json | 0 .../memory_leaks/.vscode/tasks.json | 0 .../memory_leaks/Makefile | 0 .../memory_leaks/mem_leaks.c | 0 .../process/.vscode/launch.json | 0 .../process/.vscode/tasks.json | 0 src/{ => 01_environment}/process/Makefile | 0 src/{ => 01_environment}/process/process.c | 0 .../system_calls/.vscode/launch.json | 0 .../system_calls/.vscode/tasks.json | 0 .../system_calls/Makefile | 0 .../system_calls/syscall.c | 0 .../tracing/.vscode/launch.json | 0 .../tracing/.vscode/tasks.json | 0 src/{ => 01_environment}/tracing/Makefile | 0 src/{ => 01_environment}/tracing/fibonacci.c | 0 src/06_optimization/Makefile | 5 ++ src/06_optimization/ex01/Makefile | 54 +++++++++++++++++++ src/06_optimization/ex01/main.c | 23 ++++++++ src/06_optimization/ex02/Makefile | 54 +++++++++++++++++++ src/06_optimization/ex02/main.c | 24 +++++++++ .../ex03/ApacheAccessLogAnalyzer.cpp | 37 +++++++++++++ .../ex03/ApacheAccessLogAnalyzer.h | 20 +++++++ src/06_optimization/ex03/HostCounter.cpp | 26 +++++++++ src/06_optimization/ex03/HostCounter.h | 22 ++++++++ src/06_optimization/ex03/Makefile | 30 +++++++++++ src/06_optimization/ex03/main.cpp | 30 +++++++++++ 50 files changed, 325 insertions(+) rename src/{ => 01_environment}/Makefile (100%) rename src/{ => 01_environment}/appl.mk (100%) rename src/{ => 01_environment}/backtrace/.vscode/launch.json (100%) rename src/{ => 01_environment}/backtrace/.vscode/tasks.json (100%) rename src/{ => 01_environment}/backtrace/Makefile (100%) rename src/{ => 01_environment}/backtrace/main.c (100%) rename src/{ => 01_environment}/core_dumps/.vscode/launch.json (100%) rename src/{ => 01_environment}/core_dumps/.vscode/tasks.json (100%) rename src/{ => 01_environment}/core_dumps/Makefile (100%) rename src/{ => 01_environment}/core_dumps/core_dumps.c (100%) rename src/{ => 01_environment}/daemon/.vscode/launch.json (100%) rename src/{ => 01_environment}/daemon/.vscode/tasks.json (100%) rename src/{ => 01_environment}/daemon/Makefile (100%) rename src/{ => 01_environment}/daemon/S60appl (100%) rename src/{ => 01_environment}/daemon/daemon.c (100%) rename src/{ => 01_environment}/dot-vscode/deploy.sh (100%) rename src/{ => 01_environment}/dot-vscode/launch.json (100%) rename src/{ => 01_environment}/dot-vscode/launch.json_presque (100%) rename src/{ => 01_environment}/dot-vscode/tasks.json (100%) rename src/{ => 01_environment}/fibonacci/.vscode/launch.json (100%) rename src/{ => 01_environment}/fibonacci/.vscode/tasks.json (100%) rename src/{ => 01_environment}/fibonacci/Makefile (100%) rename src/{ => 01_environment}/fibonacci/fibonacci.c (100%) rename src/{ => 01_environment}/memory_leaks/.vscode/launch.json (100%) rename src/{ => 01_environment}/memory_leaks/.vscode/tasks.json (100%) rename src/{ => 01_environment}/memory_leaks/Makefile (100%) rename src/{ => 01_environment}/memory_leaks/mem_leaks.c (100%) rename src/{ => 01_environment}/process/.vscode/launch.json (100%) rename src/{ => 01_environment}/process/.vscode/tasks.json (100%) rename src/{ => 01_environment}/process/Makefile (100%) rename src/{ => 01_environment}/process/process.c (100%) rename src/{ => 01_environment}/system_calls/.vscode/launch.json (100%) rename src/{ => 01_environment}/system_calls/.vscode/tasks.json (100%) rename src/{ => 01_environment}/system_calls/Makefile (100%) rename src/{ => 01_environment}/system_calls/syscall.c (100%) rename src/{ => 01_environment}/tracing/.vscode/launch.json (100%) rename src/{ => 01_environment}/tracing/.vscode/tasks.json (100%) rename src/{ => 01_environment}/tracing/Makefile (100%) rename src/{ => 01_environment}/tracing/fibonacci.c (100%) create mode 100644 src/06_optimization/Makefile create mode 100644 src/06_optimization/ex01/Makefile create mode 100644 src/06_optimization/ex01/main.c create mode 100644 src/06_optimization/ex02/Makefile create mode 100644 src/06_optimization/ex02/main.c create mode 100644 src/06_optimization/ex03/ApacheAccessLogAnalyzer.cpp create mode 100644 src/06_optimization/ex03/ApacheAccessLogAnalyzer.h create mode 100644 src/06_optimization/ex03/HostCounter.cpp create mode 100644 src/06_optimization/ex03/HostCounter.h create mode 100644 src/06_optimization/ex03/Makefile create mode 100644 src/06_optimization/ex03/main.cpp diff --git a/src/Makefile b/src/01_environment/Makefile similarity index 100% rename from src/Makefile rename to src/01_environment/Makefile diff --git a/src/appl.mk b/src/01_environment/appl.mk similarity index 100% rename from src/appl.mk rename to src/01_environment/appl.mk diff --git a/src/backtrace/.vscode/launch.json b/src/01_environment/backtrace/.vscode/launch.json similarity index 100% rename from src/backtrace/.vscode/launch.json rename to src/01_environment/backtrace/.vscode/launch.json diff --git a/src/backtrace/.vscode/tasks.json b/src/01_environment/backtrace/.vscode/tasks.json similarity index 100% rename from src/backtrace/.vscode/tasks.json rename to src/01_environment/backtrace/.vscode/tasks.json diff --git a/src/backtrace/Makefile b/src/01_environment/backtrace/Makefile similarity index 100% rename from src/backtrace/Makefile rename to src/01_environment/backtrace/Makefile diff --git a/src/backtrace/main.c b/src/01_environment/backtrace/main.c similarity index 100% rename from src/backtrace/main.c rename to src/01_environment/backtrace/main.c diff --git a/src/core_dumps/.vscode/launch.json b/src/01_environment/core_dumps/.vscode/launch.json similarity index 100% rename from src/core_dumps/.vscode/launch.json rename to src/01_environment/core_dumps/.vscode/launch.json diff --git a/src/core_dumps/.vscode/tasks.json b/src/01_environment/core_dumps/.vscode/tasks.json similarity index 100% rename from src/core_dumps/.vscode/tasks.json rename to src/01_environment/core_dumps/.vscode/tasks.json diff --git a/src/core_dumps/Makefile b/src/01_environment/core_dumps/Makefile similarity index 100% rename from src/core_dumps/Makefile rename to src/01_environment/core_dumps/Makefile diff --git a/src/core_dumps/core_dumps.c b/src/01_environment/core_dumps/core_dumps.c similarity index 100% rename from src/core_dumps/core_dumps.c rename to src/01_environment/core_dumps/core_dumps.c diff --git a/src/daemon/.vscode/launch.json b/src/01_environment/daemon/.vscode/launch.json similarity index 100% rename from src/daemon/.vscode/launch.json rename to src/01_environment/daemon/.vscode/launch.json diff --git a/src/daemon/.vscode/tasks.json b/src/01_environment/daemon/.vscode/tasks.json similarity index 100% rename from src/daemon/.vscode/tasks.json rename to src/01_environment/daemon/.vscode/tasks.json diff --git a/src/daemon/Makefile b/src/01_environment/daemon/Makefile similarity index 100% rename from src/daemon/Makefile rename to src/01_environment/daemon/Makefile diff --git a/src/daemon/S60appl b/src/01_environment/daemon/S60appl similarity index 100% rename from src/daemon/S60appl rename to src/01_environment/daemon/S60appl diff --git a/src/daemon/daemon.c b/src/01_environment/daemon/daemon.c similarity index 100% rename from src/daemon/daemon.c rename to src/01_environment/daemon/daemon.c diff --git a/src/dot-vscode/deploy.sh b/src/01_environment/dot-vscode/deploy.sh similarity index 100% rename from src/dot-vscode/deploy.sh rename to src/01_environment/dot-vscode/deploy.sh diff --git a/src/dot-vscode/launch.json b/src/01_environment/dot-vscode/launch.json similarity index 100% rename from src/dot-vscode/launch.json rename to src/01_environment/dot-vscode/launch.json diff --git a/src/dot-vscode/launch.json_presque b/src/01_environment/dot-vscode/launch.json_presque similarity index 100% rename from src/dot-vscode/launch.json_presque rename to src/01_environment/dot-vscode/launch.json_presque diff --git a/src/dot-vscode/tasks.json b/src/01_environment/dot-vscode/tasks.json similarity index 100% rename from src/dot-vscode/tasks.json rename to src/01_environment/dot-vscode/tasks.json diff --git a/src/fibonacci/.vscode/launch.json b/src/01_environment/fibonacci/.vscode/launch.json similarity index 100% rename from src/fibonacci/.vscode/launch.json rename to src/01_environment/fibonacci/.vscode/launch.json diff --git a/src/fibonacci/.vscode/tasks.json b/src/01_environment/fibonacci/.vscode/tasks.json similarity index 100% rename from src/fibonacci/.vscode/tasks.json rename to src/01_environment/fibonacci/.vscode/tasks.json diff --git a/src/fibonacci/Makefile b/src/01_environment/fibonacci/Makefile similarity index 100% rename from src/fibonacci/Makefile rename to src/01_environment/fibonacci/Makefile diff --git a/src/fibonacci/fibonacci.c b/src/01_environment/fibonacci/fibonacci.c similarity index 100% rename from src/fibonacci/fibonacci.c rename to src/01_environment/fibonacci/fibonacci.c diff --git a/src/memory_leaks/.vscode/launch.json b/src/01_environment/memory_leaks/.vscode/launch.json similarity index 100% rename from src/memory_leaks/.vscode/launch.json rename to src/01_environment/memory_leaks/.vscode/launch.json diff --git a/src/memory_leaks/.vscode/tasks.json b/src/01_environment/memory_leaks/.vscode/tasks.json similarity index 100% rename from src/memory_leaks/.vscode/tasks.json rename to src/01_environment/memory_leaks/.vscode/tasks.json diff --git a/src/memory_leaks/Makefile b/src/01_environment/memory_leaks/Makefile similarity index 100% rename from src/memory_leaks/Makefile rename to src/01_environment/memory_leaks/Makefile diff --git a/src/memory_leaks/mem_leaks.c b/src/01_environment/memory_leaks/mem_leaks.c similarity index 100% rename from src/memory_leaks/mem_leaks.c rename to src/01_environment/memory_leaks/mem_leaks.c diff --git a/src/process/.vscode/launch.json b/src/01_environment/process/.vscode/launch.json similarity index 100% rename from src/process/.vscode/launch.json rename to src/01_environment/process/.vscode/launch.json diff --git a/src/process/.vscode/tasks.json b/src/01_environment/process/.vscode/tasks.json similarity index 100% rename from src/process/.vscode/tasks.json rename to src/01_environment/process/.vscode/tasks.json diff --git a/src/process/Makefile b/src/01_environment/process/Makefile similarity index 100% rename from src/process/Makefile rename to src/01_environment/process/Makefile diff --git a/src/process/process.c b/src/01_environment/process/process.c similarity index 100% rename from src/process/process.c rename to src/01_environment/process/process.c diff --git a/src/system_calls/.vscode/launch.json b/src/01_environment/system_calls/.vscode/launch.json similarity index 100% rename from src/system_calls/.vscode/launch.json rename to src/01_environment/system_calls/.vscode/launch.json diff --git a/src/system_calls/.vscode/tasks.json b/src/01_environment/system_calls/.vscode/tasks.json similarity index 100% rename from src/system_calls/.vscode/tasks.json rename to src/01_environment/system_calls/.vscode/tasks.json diff --git a/src/system_calls/Makefile b/src/01_environment/system_calls/Makefile similarity index 100% rename from src/system_calls/Makefile rename to src/01_environment/system_calls/Makefile diff --git a/src/system_calls/syscall.c b/src/01_environment/system_calls/syscall.c similarity index 100% rename from src/system_calls/syscall.c rename to src/01_environment/system_calls/syscall.c diff --git a/src/tracing/.vscode/launch.json b/src/01_environment/tracing/.vscode/launch.json similarity index 100% rename from src/tracing/.vscode/launch.json rename to src/01_environment/tracing/.vscode/launch.json diff --git a/src/tracing/.vscode/tasks.json b/src/01_environment/tracing/.vscode/tasks.json similarity index 100% rename from src/tracing/.vscode/tasks.json rename to src/01_environment/tracing/.vscode/tasks.json diff --git a/src/tracing/Makefile b/src/01_environment/tracing/Makefile similarity index 100% rename from src/tracing/Makefile rename to src/01_environment/tracing/Makefile diff --git a/src/tracing/fibonacci.c b/src/01_environment/tracing/fibonacci.c similarity index 100% rename from src/tracing/fibonacci.c rename to src/01_environment/tracing/fibonacci.c diff --git a/src/06_optimization/Makefile b/src/06_optimization/Makefile new file mode 100644 index 0000000..23c1094 --- /dev/null +++ b/src/06_optimization/Makefile @@ -0,0 +1,5 @@ +DIRS=$(filter-out Makefile, $(wildcard *)) + +all clean install clean_all: + for dir in $(DIRS); do $(MAKE) $@ -C $$dir; done + diff --git a/src/06_optimization/ex01/Makefile b/src/06_optimization/ex01/Makefile new file mode 100644 index 0000000..a619b9a --- /dev/null +++ b/src/06_optimization/ex01/Makefile @@ -0,0 +1,54 @@ +EXE=ex1 +SRCS=$(wildcard *.c) + +ifeq ($(target),) +target=nano +endif + +CFLAGS=-Wall -Wextra -g -c -O1 -MD -std=gnu11 -D_GNU_SOURCE + +ifeq ($(target),nano) +TOOLCHAIN_PATH=/buildroot/output/host/usr/bin/ +TOOLCHAIN=$(TOOLCHAIN_PATH)aarch64-linux- +CFLAGS+=-mcpu=cortex-a53 -funwind-tables +CFLAGS+=-fno-omit-frame-pointer +OBJDIR=.obj/nano +EXEC=$(EXE) +endif + +ifeq ($(target),host) +EXEC=$(EXE)_h +endif + +CC=$(TOOLCHAIN)gcc +LD=$(TOOLCHAIN)gcc +AR=$(TOOLCHAIN)ar +STRIP=$(TOOLCHAIN)strip +OBJDUMP=$(TOOLCHAIN)objdump + +OBJDIR=.obj/$(target) +OBJS= $(addprefix $(OBJDIR)/, $(SRCS:.c=.o)) + +$(OBJDIR)/%o: %c + $(CC) $(CFLAGS) $< -o $@ + +all: $(OBJDIR)/ $(EXEC) + +$(EXEC): $(OBJS) $(LINKER_SCRIPT) + $(LD) $(OBJS) $(LDFLAGS) -o $@ + +$(OBJDIR)/: + mkdir -p $(OBJDIR) + +clean: + rm -Rf $(OBJDIR) $(EXEC) $(EXEC)_s *~ t.txt + +clean_all: clean + rm -Rf .obj $(EXE) $(EXE)_s $(EXE)_a $(EXE)_a_s $(EXE)_h $(EXE)_h_s + +dump: all + $(OBJDUMP) -dS $(EXEC) > t.txt + +-include $(OBJS:.o=.d) + +.PHONY: all clean clean_all dump diff --git a/src/06_optimization/ex01/main.c b/src/06_optimization/ex01/main.c new file mode 100644 index 0000000..646c561 --- /dev/null +++ b/src/06_optimization/ex01/main.c @@ -0,0 +1,23 @@ +#include + +#define SIZE 5000 + +static int32_t array[SIZE][SIZE]; + +int main (void) +{ + int i, j, k; + + for (k = 0; k < 10; k++) + { + for (i = 0; i < SIZE; i++) + { + for (j = 0; j < SIZE; j++) + { + array[j][i]++; + } + } + } + return 0; +} + diff --git a/src/06_optimization/ex02/Makefile b/src/06_optimization/ex02/Makefile new file mode 100644 index 0000000..d043773 --- /dev/null +++ b/src/06_optimization/ex02/Makefile @@ -0,0 +1,54 @@ +EXE=ex2 +SRCS=$(wildcard *.c) + +ifeq ($(target),) +target=nano +endif + +CFLAGS=-Wall -Wextra -g -c -O0 -MD -std=gnu11 -D_GNU_SOURCE + +ifeq ($(target),nano) +TOOLCHAIN_PATH=/buildroot/output/host/usr/bin/ +TOOLCHAIN=$(TOOLCHAIN_PATH)aarch64-linux- +CFLAGS+=-mcpu=cortex-a53 -funwind-tables -fno-omit-frame-pointer +##CFLAGS+=-O2 +OBJDIR=.obj/nano +EXEC=$(EXE) +endif + +ifeq ($(target),host) +EXEC=$(EXE)_h +endif + +CC=$(TOOLCHAIN)gcc +LD=$(TOOLCHAIN)gcc +AR=$(TOOLCHAIN)ar +STRIP=$(TOOLCHAIN)strip +OBJDUMP=$(TOOLCHAIN)objdump + +OBJDIR=.obj/$(target) +OBJS= $(addprefix $(OBJDIR)/, $(SRCS:.c=.o)) + +$(OBJDIR)/%o: %c + $(CC) $(CFLAGS) $< -o $@ + +all: $(OBJDIR)/ $(EXEC) + +$(EXEC): $(OBJS) $(LINKER_SCRIPT) + $(LD) $(OBJS) $(LDFLAGS) -o $@ + +$(OBJDIR)/: + mkdir -p $(OBJDIR) + +clean: + rm -Rf $(OBJDIR) $(EXEC) $(EXEC)_s *~ t.txt + +clean_all: clean + rm -Rf .obj $(EXE) $(EXE)_s $(EXE)_a $(EXE)_a_s $(EXE)_h $(EXE)_h_s + +dump: all + $(OBJDUMP) -dS $(EXEC) > t.txt + +-include $(OBJS:.o=.d) + +.PHONY: all clean clean_all dump diff --git a/src/06_optimization/ex02/main.c b/src/06_optimization/ex02/main.c new file mode 100644 index 0000000..08db720 --- /dev/null +++ b/src/06_optimization/ex02/main.c @@ -0,0 +1,24 @@ +#include +#include + +#define SIZE 65536 + +int main() +{ + // generate data + short data[SIZE]; + for (int i = 0; i < SIZE; i++) { + data[i] = rand() % 512; + } + + + long long sum = 0; + for (int j = 0; j < 10000; j++) { + for (int i = 0; i < SIZE; i++) { + if (data[i] >= 256) { + sum += data[i]; + } + } + } + printf ("sum=%lld\n", sum); +} diff --git a/src/06_optimization/ex03/ApacheAccessLogAnalyzer.cpp b/src/06_optimization/ex03/ApacheAccessLogAnalyzer.cpp new file mode 100644 index 0000000..50047e8 --- /dev/null +++ b/src/06_optimization/ex03/ApacheAccessLogAnalyzer.cpp @@ -0,0 +1,37 @@ +#include "ApacheAccessLogAnalyzer.h" + +#include +#include +#include + + +ApacheAccessLogAnalyzer::ApacheAccessLogAnalyzer(std::string filename) + : myFilename(filename) +{ + +} + +void ApacheAccessLogAnalyzer::openFile() +{ + myInFile.open(myFilename.c_str()); +} + +void ApacheAccessLogAnalyzer::closeFile() +{ + myInFile.close(); +} + +void ApacheAccessLogAnalyzer::processFile() +{ + std::cout << "Processing log file " << myFilename << std::endl; + for( std::string line; getline( myInFile, line ); ) + { + // parse the log line to extract the hostname / ip address + int space_pos = line.find_first_of(" "); + std::string hostname = line.substr(0, space_pos); + + myHostCounter.notifyHost(hostname); + } + + std::cout << "Found " << myHostCounter.getNbOfHosts() << " unique Hosts/IPs" << std::endl; +} diff --git a/src/06_optimization/ex03/ApacheAccessLogAnalyzer.h b/src/06_optimization/ex03/ApacheAccessLogAnalyzer.h new file mode 100644 index 0000000..28a25cd --- /dev/null +++ b/src/06_optimization/ex03/ApacheAccessLogAnalyzer.h @@ -0,0 +1,20 @@ +#include "HostCounter.h" + +#include +#include +#include + +class ApacheAccessLogAnalyzer +{ + public: + ApacheAccessLogAnalyzer(std::string filename); + + void openFile(); + void closeFile(); + void processFile(); + + private: + std::string myFilename; + std::ifstream myInFile; + HostCounter myHostCounter; +}; diff --git a/src/06_optimization/ex03/HostCounter.cpp b/src/06_optimization/ex03/HostCounter.cpp new file mode 100644 index 0000000..99a5d5b --- /dev/null +++ b/src/06_optimization/ex03/HostCounter.cpp @@ -0,0 +1,26 @@ +#include "HostCounter.h" + +#include // for std::find + +HostCounter::HostCounter() +{ +} + +bool HostCounter::isNewHost(std::string hostname) +{ + return std::find(myHosts.begin(), myHosts.end(), hostname) == myHosts.end(); +} + +void HostCounter::notifyHost(std::string hostname) +{ + // add the host in the list if not already in + if(isNewHost(hostname)) + { + myHosts.push_back(hostname); + } +} + +int HostCounter::getNbOfHosts() +{ + return myHosts.size(); +} diff --git a/src/06_optimization/ex03/HostCounter.h b/src/06_optimization/ex03/HostCounter.h new file mode 100644 index 0000000..d627d02 --- /dev/null +++ b/src/06_optimization/ex03/HostCounter.h @@ -0,0 +1,22 @@ +#include + +#include + +class HostCounter +{ + public: + HostCounter(); + + // Announce a host to the HostCounter. + // if the host is new, it will be added to the list, otherwise we ignore it. + void notifyHost(std::string hostname); + + // return the number of unique hosts found so far + int getNbOfHosts(); + + private: + // check if host is already in the list + bool isNewHost(std::string hostname); + + std::vector< std::string > myHosts; +}; diff --git a/src/06_optimization/ex03/Makefile b/src/06_optimization/ex03/Makefile new file mode 100644 index 0000000..a511b48 --- /dev/null +++ b/src/06_optimization/ex03/Makefile @@ -0,0 +1,30 @@ +##CXX?=g++ +##CXXFLAGS=-Wall -Wextra -g -O0 -MD + +TOOLCHAIN_PATH=/buildroot/output/host/usr/bin/ +TOOLCHAIN=$(TOOLCHAIN_PATH)aarch64-linux- +CXX=$(TOOLCHAIN)g++ +CXXFLAGS=-Wall -Wextra -g -gdwarf -O0 -MD -mcpu=cortex-a53 -fno-omit-frame-pointer -funwind-tables + +SOURCES=$(wildcard *.cpp) +OBJECTS=$(SOURCES:.cpp=.o) +EXECUTABLE=read-apache-logs + +all: $(SOURCES) $(EXECUTABLE) + +$(EXECUTABLE): $(OBJECTS) + $(CXX) $(CXXFLAGS) -o $@ $(OBJECTS) + +.c.o: + $(CXX) -c $(CXXFLAGS) $< -o $@ + + +clean: + @rm -f $(OBJECTS) + @rm -f *.d *~ + +clean_all: clean + @rm -f $(EXECUTABLE) + @rm -f perf.data perf.data.old + +-include *.d diff --git a/src/06_optimization/ex03/main.cpp b/src/06_optimization/ex03/main.cpp new file mode 100644 index 0000000..f74cc0f --- /dev/null +++ b/src/06_optimization/ex03/main.cpp @@ -0,0 +1,30 @@ +#include "ApacheAccessLogAnalyzer.h" + +#include + +// forward declaration +void usage(const char* progName); + +int main(int argc, const char* argv[]) +{ + if(argc != 2) + { + usage(argv[0]); + return -1; + } + + std::string filename = argv[1]; + + ApacheAccessLogAnalyzer analyzer(filename); + + analyzer.openFile(); + analyzer.processFile(); + analyzer.closeFile(); +} + + +void usage(const char* progName) +{ + std::cout << "Usage: " << progName << " " << std::endl; + std::cout << "\nWhere is the apache access log file" << std::endl; +}