HI,

I've just finished my application patched with your code... and it works fine !
I gonna patch evently the kernel itself in the futur but for now it is a smart 
way to do it.

Thanks
Xavier

  ----- Original Message ----- 
  From: Daniele Ziglioli 
  To: uClinux development list 
  Sent: Wednesday, September 12, 2007 10:17 AM
  Subject: Re: [uClinux-dev] USB and /dev/sdx interface


  xavier.montagne ha scritto: 
    OK, it is an idea !
    Do  you know how to rmmod and insmod a driver from an application ?


  You can do it with a system.
  If useful attached the piece of code that I use.

  regards, 
   daniele

    Cordialement,
    Xavier MONTAGNE
    Pragmatec
    06.98.06.21.55


      ----- Original Message ----- 
      From: Daniele Ziglioli 
      To: uClinux development list 
      Sent: Tuesday, September 11, 2007 4:56 PM
      Subject: Re: [uClinux-dev] USB and /dev/sdx interface


      xavier.montagne ha scritto: 
        Hi,

        Everytime I insert a new USB key to my SL811 controler, the kernel 
detects properly the key and affect a new interface :
        /dev/sda1
        /dev/sdb1
        /dev/sdc1

        If I reuse the same key Linux succeeds to see it and affect the same 
previous interface (/dev/sdb for instance).
        But how to use everytime the same interface /dev/sda, even if I remove 
the key and insert a different one into the same slot ?
        Is it a standard Linux behavior to lock a /dev/sdx interface for a 
dedicated peripheral once detected ?

        Cordialement,
        Xavier MONTAGNE
        Pragmatec
        06.98.06.21.55

------------------------------------------------------------------------
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-devIf applicable, I do 
rmmod/insmod  of the usb storage kernel module, every time insert a usbkey, to 
avoid this.


-- 
Daniele Ziglioli
Signal S.r.l.

--------------------------------------------------------------------------
      _______________________________________________
      uClinux-dev mailing list
      [email protected]
      http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
      This message was resent by [email protected]
      To unsubscribe see:
      http://mailman.uclinux.org/mailman/options/uclinux-dev 


--------------------------------------------------------------------------
      No virus found in this incoming message.
      Checked by AVG Free Edition. 
      Version: 7.5.485 / Virus Database: 269.13.14/999 - Release Date: 
10/09/2007 17:43

----------------------------------------------------------------------------
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

-- 
Daniele Ziglioli
Signal S.r.l.

------------------------------------------------------------------------------


  /*///////////////////////////////////////////////////////////////////////////
  //
  // This file is released under the GPL license.
  // 
  //
  // Module: usbmount
  //
  // Description:
  // automatic usb disk mount/umount 
  //
  // History :
  // 01.00 04/01/03 DZ    prima versione
  // 01.01 31/08/07 DZ    sleep a 3
  //
  ///////////////////////////////////////////////////////////////////////////*/

  #define TRACE printf
  //#define TRACE //

  #include <stdio.h>
  #include <string.h>
  #include <signal.h>
  #include <termios.h>

  #include <math.h>
  #include <sys/stat.h>
  #include <sys/times.h>

  static void usage(int rc)
  {
  printf("usbmount:  automatic usb disk mount/umount \n");
  printf("(C) Signal s.r.l.  (DZ)    Ver 1.01   %s %s \n", __DATE__, __TIME__);
  printf("usage : usbmount mount_dir [umount]\n");
  printf("  mount_dir : where to mount usb disk\n");
  printf("  umount : to unmount a previous mounted dir\n");
  exit(rc);
  }



  #define MAX_BUFF 512
  #ifdef __NO_SBB__
  int main(int argc,char **argv)
  #else
  int main_usbmount(int argc,char **argv)
  #endif
  {
      int ret, tmp;
  FILE *fp;
  FILE *fp_part;
  char buff[MAX_BUFF], *p;
  char strApp[MAX_BUFF];
  char strApp2[MAX_BUFF];
  int found=0;

  if(argc < 2) {
  usage(1);
  }

  if(argc == 3) {
  if(strcmp(argv[2], "umount")==0) {
  sprintf(strApp2, "umount %s", argv[1]);
  system(strApp2);
  system("rmmod usb-storage");
  system("rmmod hc_sl811");
  exit(0);
  }
  }

  if((fp_part = fopen("/proc/partitions", "r")) == NULL)
  return 0;

  sprintf(strApp2, "umount %s", argv[1]);
  system(strApp2);
  system("rmmod usb-storage");
  system("rmmod hc_sl811");
  sleep(1);

  // system("rmmod usb-storage");
  system("insmod hc_sl811");
  system("insmod usb-storage");
  sleep(3);



  // cerca solo partizoni con finale numero tipo sda[1-9]
  while(fgets(buff, MAX_BUFF, fp_part) && !found) {
  TRACE(buff);

  if(p=strstr(buff, "sd")) {
  sscanf(p, "%s", strApp);
  tmp = strlen(strApp)-1;
  if(strApp[tmp] < '1' || strApp[tmp] > '9')
  continue;
  printf("TRY:  mount -t vfat /dev/%s %s\n", strApp, argv[1]);
  sprintf(strApp2, "mount -t vfat /dev/%s %s", strApp, argv[1]);
  if(system(strApp2) == 0) {
  TRACE("%s\n", strApp2);
  found=1;
  goto _ex1;
  }
  }
  }

  // riprova per tutte
  printf("RETRY\n");
  fseek(fp_part, 0, SEEK_SET);
  while(fgets(buff, MAX_BUFF, fp_part) && !found) {
  TRACE(buff);

  if(p=strstr(buff, "sd")) {
  sscanf(p, "%s", strApp);
  printf("TRY:  mount -t vfat /dev/%s %s\n", strApp, argv[1]);
  sprintf(strApp2, "mount -t vfat /dev/%s %s", strApp, argv[1]);
  if(system(strApp2) == 0) {
  TRACE("%s\n", strApp2);
  found=1;
  goto _ex1;
  }
  }
  }


  _ex1:
  fclose(fp_part);

  if(found)
  exit(0);

  exit(1);
  return 0;
  }



------------------------------------------------------------------------------


  _______________________________________________
  uClinux-dev mailing list
  [email protected]
  http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
  This message was resent by [email protected]
  To unsubscribe see:
  http://mailman.uclinux.org/mailman/options/uclinux-dev


------------------------------------------------------------------------------


  No virus found in this incoming message.
  Checked by AVG Free Edition. 
  Version: 7.5.485 / Virus Database: 269.13.14/999 - Release Date: 10/09/2007 
17:43
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to