From 6c701b58a24d96e37c323412f3d2aa334cd2ded1 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sun, 6 Mar 2011 20:46:29 +0000 Subject: La gestion minimaliste des évènements de modification des slices est faite. Un dump à chaque event a été codé dans le main pour tester cet aspect. C'est ok. Go go go ncurses :D MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///var/svn/2011-ddhardrescue/trunk@11 d3078510-dda0-49f1-841c-895ef4b7ec81 --- src/ddhardrescue.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'src/ddhardrescue.c') diff --git a/src/ddhardrescue.c b/src/ddhardrescue.c index afad903..9f355b3 100755 --- a/src/ddhardrescue.c +++ b/src/ddhardrescue.c @@ -5,7 +5,7 @@ #include #include -#include "slices.h" +#include "slices_evt.h" #include "recover.h" #include "utils.h" @@ -14,17 +14,9 @@ int end=0; //FIXME remove me, only for tests unsigned long c=0; -typedef enum { E_BOUND, E_TYPE } sliceEventKind_t; - -typedef struct { - slices_t *data; - pthread_mutex_t mutex; - void (*slices_listener)(sliceEventKind_t eventKind, slices_t *slices, slice_t *slice); -} slices_manage_t; - struct threadArgs { struct progArgs *progArgs; - slices_manage_t *slices; + slices_evt_t *slices; }; @@ -32,6 +24,16 @@ void sigHookAbrt() { end=1; } +//TODO : remove that when procViewer is done +void dumper(slices_evt_t *slicesEvt, slice_t *modifiedSlice) { + address_t blockSize=0; + char *dump; + dump=slicesDump(slicesEvt->data, &blockSize, 1000, 0, 21474836480ULL); + puts(dump); + free(dump); + +} + void *procWorker(void *a); void *procViewer(void *a); @@ -41,7 +43,7 @@ int main(int argc, char **argv) { pthread_t tWorker, tViewer; // Main data structures - slices_manage_t slices; + slices_evt_t slices; // Progam and threads arguments struct progArgs args; @@ -72,6 +74,7 @@ int main(int argc, char **argv) { // Data structure initialization memset(&slices, 0, sizeof(slices)); slices.data=slicesNewSingleton(args.beginSector, args.endSector, S_UNKNOWN); + slices.eventListener=dumper; res=pthread_mutex_init(&(slices.mutex), NULL); if (res!=0) { return 3; @@ -96,7 +99,7 @@ int main(int argc, char **argv) { (void) pthread_join(tWorker, NULL); (void) pthread_join(tViewer, NULL); - //Final dump of datas + /*Final dump of datas address_t blockSize=0; char *dump; dump=slicesDump(slices.data, &blockSize, 1000, args.beginSector, args.endSector); @@ -104,6 +107,7 @@ int main(int argc, char **argv) { free(dump); printf("blockSize==%lld\n", blockSize); printf("slices->count==%d\n", slices.data->count); + */ //Resources desallocation (void) pthread_mutex_destroy(&(slices.mutex)); @@ -125,7 +129,7 @@ void * procWorker(void *a) { struct threadArgs *tArgs = (struct threadArgs *)a; recover( - tArgs->slices->data, + tArgs->slices, tArgs->progArgs->src, tArgs->progArgs->dst, tArgs->progArgs->ddOpts @@ -138,3 +142,5 @@ void *procViewer(void *a) { return a; } + + -- cgit v1.2.3