summaryrefslogtreecommitdiff
path: root/src/ddhardrescue.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ddhardrescue.c')
-rwxr-xr-xsrc/ddhardrescue.c32
1 files changed, 19 insertions, 13 deletions
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 <string.h>
#include <pthread.h>
-#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;
}
+
+