Commit Graph

36 Commits

Author SHA1 Message Date
Cedric BAIL 75577ee618 * eio: remove unecessary call.
SVN revision: 53365
2010-10-13 16:45:45 +00:00
Cedric BAIL a1c4588d64 * eio: fix use of ecore_thread_*run.
SVN revision: 53348
2010-10-13 10:59:33 +00:00
Gustavo Sverzut Barbieri c30d8f6af6 init threads as we use them!
SVN revision: 53342
2010-10-13 06:14:56 +00:00
Gustavo Sverzut Barbieri 83270f5f45 seems that the other way was not enough.
I was still reaching uninitialized usage and it does make sense, as
the parent thread could be postponed until the new is started, then
the scanner/worker thread hits an error (ie: directory permission
denied) and it is cancelled before the main thread had time to get the
thread attribution (common->thread).

I'd like someone to look at it. Probably this is NOT the right way to
fix. Likely what we should do is send a "ready! start working" command
from the main thread to the worker thread and avoid such thing.


==5848== Conditional jump or move depends on uninitialised value(s)
==5848==    at 0x42808CD: ecore_thread_cancel (ecore_thread.c:534)
==5848==    by 0x4238558: eio_file_thread_error (eio_single.c:35)
==5848==    by 0x42368FC: _eio_file_direct_heavy (eio_file.c:78)
==5848==    by 0x42800F3: _ecore_feedback_job (ecore_thread.c:247)
==5848==    by 0x4280398: _ecore_thread_worker (ecore_thread.c:317)
==5848==    by 0x41FE16AE: start_thread (in /lib/libpthread-2.11.2.so)
==5848==    by 0x41F3295D: clone (in /lib/libc-2.11.2.so)
==5848==  Uninitialised value was created by a heap allocation
==5848==    at 0x400793F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==5848==    by 0x4237991: eio_file_direct_ls (eio_file.c:566)
==5848==    by 0x8051C81: ephoto_directory_thumb_add (ephoto_directory_thumb.c:131)
==5848==    by 0x804D4AB: _ephoto_thumb_dir_icon_get (ephoto_thumb_browser.c:75)
==5848==    by 0x405F4C8: _item_realize (elm_gengrid.c:807)
==5848==    by 0x405FE77: _item_place (elm_gengrid.c:980)
==5848==    by 0x40610F6: _pan_calculate (elm_gengrid.c:1199)
==5848==    by 0x418CA38: evas_call_smarts_calculate (evas_object_smart.c:843)
==5848==    by 0x41B23B2: evas_render_updates_internal (evas_render.c:971)
==5848==    by 0x41B3DA1: evas_render_updates (evas_render.c:1414)
==5848==    by 0x42E4550: _ecore_evas_x_render (ecore_evas_x.c:406)
==5848==    by 0x42DDD2C: _ecore_evas_idle_enter (ecore_evas.c:47)




SVN revision: 53340
2010-10-13 05:33:16 +00:00
Gustavo Sverzut Barbieri d037d75281 fix unitialized error.
==17972== Use of uninitialised value of size 4
==17972==    at 0x42918DB: ecore_thread_cancel (ecore_thread.c:536)
==17972==    by 0x4249558: eio_file_thread_error (eio_single.c:35)
==17972==    by 0x42478FC: _eio_file_direct_heavy (eio_file.c:78)
==17972==    by 0x42910F3: _ecore_feedback_job (ecore_thread.c:247)
==17972==    by 0x4291398: _ecore_thread_worker (ecore_thread.c:317)
==17972==    by 0x41FE16AE: start_thread (in /lib/libpthread-2.11.2.so)
==17972==    by 0x41F3295D: clone (in /lib/libc-2.11.2.so)
==17972==  Uninitialised value was created by a heap allocation
==17972==    at 0x400793F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==17972==    by 0x4248991: eio_file_direct_ls (eio_file.c:566)
==17972==    by 0x8050B8E: ephoto_directory_thumb_add (ephoto_directory_thumb.c:127)
==17972==    by 0x4061570: _item_realize (elm_gengrid.c:807)
==17972==    by 0x4061E27: _item_place (elm_gengrid.c:980)
==17972==    by 0x4062875: _pan_calculate (elm_gengrid.c:1199)
==17972==    by 0x419DA38: evas_call_smarts_calculate (evas_object_smart.c:843)
==17972==    by 0x41C33B2: evas_render_updates_internal (evas_render.c:971)
==17972==    by 0x41C4DA1: evas_render_updates (evas_render.c:1414)
==17972==    by 0x42F5550: _ecore_evas_x_render (ecore_evas_x.c:406)
==17972==    by 0x42EED2C: _ecore_evas_idle_enter (ecore_evas.c:47)
==17972==    by 0x428C85F: _ecore_idle_enterer_call (ecore_idle_enterer.c:129)




SVN revision: 53336
2010-10-13 03:56:24 +00:00
Carsten Haitzler 8cde3d4ba6 ok... bad eio hackers. you know setting things like gnu_source and
file_offset_bits .. CHANGES the size of structs like dirent? so if u
do it differently in different c files... u end up with.. GASP
different structs with different sizes! dont do this. unify everything
into eio_private.h so its at least CONSISTENT for eio's internals.



SVN revision: 53322
2010-10-13 00:26:12 +00:00
Vincent Torri 0304666261 improve doc. Now, cedric, it's up to you :p
SVN revision: 53308
2010-10-12 14:59:30 +00:00
Cedric BAIL cb8d2cf2f9 * eio: improve allocation code for eio_file_direct_ls.
SVN revision: 53262
2010-10-11 12:40:20 +00:00
Gustavo Sverzut Barbieri 98e0d9f009 safer and louder about errors.
SVN revision: 53204
2010-10-08 20:14:21 +00:00
Eduardo de Barros Lima 9910581b1c Eio: No need to #define _GNU_SOURCE
SVN revision: 53165
2010-10-07 21:06:54 +00:00
Cedric BAIL 71ae9cd4e5 * eio: reduce code duplication.
SVN revision: 53094
2010-10-06 09:54:00 +00:00
Cedric BAIL 96172a4066 * eio: fix coding style, the other way.
SVN revision: 53071
2010-10-05 16:57:51 +00:00
Cedric BAIL b3d7e3423f * eio: add eio_dir_copy.
Little example on how to use it :
#include <Ecore.h>
#include <Eio.h>

static void
_test_notify_cb(void *data, const Eio_Progress *info)
{
   switch (info->op)
     {
      case EIO_FILE_COPY:
         printf("[%s] %f%%\n", info->dest, info->percent);
         break;
      case EIO_DIR_COPY:
         printf("global [%li/%li] %f%%\n", info->current, info->max, info->percent);
         break;
     }
}

static void
_test_done_cb(void *data)
{
   printf("copy done\n");
   ecore_main_loop_quit();
}

static void
_test_error_cb(int error, void *data)
{
   fprintf(stderr, "error: [%s]\n", strerror(error));
   ecore_main_loop_quit();
}

int
main(int argc, char **argv)
{
   Eio_File *cp;

   if (argc != 3)
     {
        fprintf(stderr, "eio_cp source_file destination_file\n");
        return -1;
     }

   ecore_init();
   eio_init();

   cp = eio_dir_copy(argv[1], argv[2],
                     _test_notify_cb,
                     _test_done_cb,
                     _test_error_cb,
                     NULL);

   ecore_main_loop_begin();

   eio_shutdown();
   ecore_shutdown();

   return 0;
}

	NOTE: be aware that it's your duty to provide the "right target".
	Meaning that copying to '.' will copy the content directly inside
	'.' and not in a subdirectory.


SVN revision: 53069
2010-10-05 16:46:41 +00:00
Cedric BAIL f352ce15bc * eio: follow efl coding style.
SVN revision: 53066
2010-10-05 15:58:19 +00:00
Cedric BAIL a1ea2ed6cd * eio: more code to share.
SVN revision: 53065
2010-10-05 15:32:24 +00:00
Cedric BAIL 9e019c7227 * eio: report current operation during progress.
SVN revision: 53063
2010-10-05 14:55:47 +00:00
Cedric BAIL d85ab417fd * eio: fix docs and typos.
SVN revision: 53062
2010-10-05 14:29:58 +00:00
Cedric BAIL 5999ca1825 * eio: share more code and make copy cancellable.
SVN revision: 53057
2010-10-05 12:56:07 +00:00
Cedric BAIL bb76ca8100 * eio: share some code.
SVN revision: 53056
2010-10-05 11:44:03 +00:00
Cedric BAIL 7088845157 * eio: add eio_file_move (completly asynchronous and non
blocking move). It first try a rename, then fallback to
	an eio_file_copy + eio_file_unlink.

Small example on how to use it :
#include <Ecore.h>
#include <Eio.h>

static void
_test_done_cb(void *data)
{
   printf("move done\n");
   ecore_main_loop_quit();
}

static void
_test_error_cb(int error, void *data)
{
   fprintf(stderr, "error: [%s]\n", strerror(error));
   ecore_main_loop_quit();
}

int
main(int argc, char **argv)
{
   Eio_File *cp;

   if (argc != 3)
     {
        fprintf(stderr, "eio_cp source_file destination_file\n");
        return -1;
     }

   ecore_init();
   eio_init();

   cp = eio_file_move(argv[1], argv[2],
                      NULL,
                      _test_done_cb,
                      _test_error_cb,
                      NULL);

   ecore_main_loop_begin();

   eio_shutdown();
   ecore_shutdown();

   return 0;
}


SVN revision: 52845
2010-09-28 09:05:51 +00:00
Cedric BAIL 135a0f570a * eio: add eio_file_copy (using splice when available and
fallback to mmap/write with huge tlb when not).

That what an eio_cp would look like :

#include <Ecore.h>
#include <Eio.h>

static void
_test_progress_cb(void *data, const Eio_Progress *info)
{
   printf("%f (%zi / %zi octets)\n", info->percent, info->current, info->max);
}

static void
_test_done_cb(void *data)
{
   printf("copy done\n");
   ecore_main_loop_quit();
}

static void
_test_error_cb(int error, void *data)
{
   fprintf(stderr, "error: [%s]\n", strerror(error));
   ecore_main_loop_quit();
}

int
main(int argc, char **argv)
{
   Eio_File *cp;

   if (argc != 3)
     {
        fprintf(stderr, "eio_cp source_file destination_file\n");
        return -1;
     }

   ecore_init();
   eio_init();

   cp = eio_file_copy(argv[1], argv[2],
                      _test_progress_cb,
                      _test_done_cb,
                      _test_error_cb,
                      NULL);

   ecore_main_loop_begin();

   eio_shutdown();
   ecore_shutdown();

   return 0;
}




SVN revision: 52787
2010-09-26 21:47:48 +00:00
Cedric BAIL 8036a32918 * ecore: rename ecore_long_run to ecore_thread_feedback_run.
SVN revision: 52573
2010-09-22 09:47:55 +00:00
Cedric BAIL d287f127fd * eio: callback are allowed to modify their own data.
Don't know how I wrote this non sense.


SVN revision: 52189
2010-09-13 13:44:24 +00:00
Cedric BAIL bf9609ebff * eio: make it compile on Windows. Thanks Vincent !
SVN revision: 51955
2010-09-07 15:47:11 +00:00
Cedric BAIL 0a4134fd5f * eio: return errno on error.
SVN revision: 51946
2010-09-07 14:43:51 +00:00
Cedric BAIL cbff3eb25a * eio: major cleanup.
SVN revision: 51927
2010-09-06 16:37:43 +00:00
Cedric BAIL ea791dccc5 * eio: minor cleanup and add stat support.
SVN revision: 51925
2010-09-06 15:27:10 +00:00
Cedric BAIL 9fb5bfffed * eio: limit number of threads used by eio_file_ls.
SVN revision: 51861
2010-09-03 13:38:49 +00:00
Cedric BAIL 810afbdf9e * eio: add eio_file_unlink.
SVN revision: 51840
2010-09-02 13:39:59 +00:00
Cedric BAIL eeafcb3be5 * eio: oops, forgot to add those files.
SVN revision: 51800
2010-09-01 08:23:15 +00:00
Cedric BAIL 1915b760ee * eio: start to implement new cleaner API.
SVN revision: 51784
2010-08-31 16:24:58 +00:00
titan 83c74eccb5 Cleanups
SVN revision: 50777
2010-08-03 17:59:55 +00:00
titan bdb6e0f0ed *Warning Breaks API so if you use eio, make the necessary changes* Make the changes k-s requested. Use Enums, Use shorter code, Change the format of the callbacks to be data first value last, etc..
SVN revision: 50771
2010-08-03 17:11:44 +00:00
titan 0ae939099c Add the ability to perform standard IO operations on a file in a thread.
SVN revision: 50618
2010-07-28 22:12:41 +00:00
Cedric BAIL 4df9bbead1 * eio: Add an error callback, some docs and a small README.
SVN revision: 50446
2010-07-23 11:00:44 +00:00
Cedric BAIL c5cc3b6e19 * eio: please welcome our asynchronous input output library.
NOTE: right now only help with file listing and provide a
	wrapper around eina_file_ls and eina_file_direct_ls and ecore_long_run.
	But the idea is to do the same with all Ecore_File code so that one
	day we can remove Ecore_File.


SVN revision: 50429
2010-07-22 16:08:17 +00:00