home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 January / PCpro_2005_01.ISO / isolinux / all.rdz / initrd / etc / pcmcia / serial < prev    next >
Encoding:
Text File  |  2004-03-24  |  2.4 KB  |  103 lines

  1. #!/bin/sh
  2. #
  3. # serial 1.42 2002/06/25 06:15:10 (David Hinds)
  4. #
  5. # Initialize or shutdown a PCMCIA serial device
  6. #
  7. # The first argument should be either 'start' or 'stop'.  The second
  8. # argument is the base name for the device.
  9. #
  10. # The script passes an extended device address to 'serial.opts' in the 
  11. # ADDRESS variable, to retrieve device-specific configuration options.
  12. # The address format is "scheme,socket,instance" where "scheme" is the
  13. # PCMCIA configuration scheme, "socket" is the socket number, and
  14. # "instance" is used to number multiple ports on a single card.  
  15. #
  16.  
  17. if [ -r ./shared ] ; then . ./shared ; else . /etc/pcmcia/shared ; fi
  18.  
  19. # Get device attributes
  20. get_info $DEVICE
  21.  
  22. # Load site-specific settings
  23. ADDRESS="$SCHEME,$SOCKET,$INSTANCE"
  24. start_fn () { return; }
  25. stop_fn () { return; }
  26. . $0.opts
  27.  
  28. CALLOUT=$DEVICE
  29.  
  30. case "$ACTION" in
  31.  
  32. 'start')
  33.     [ -n "$VERBOSE" -a -n "$INFO" ] && echo "$INFO"
  34.     if [ ! -c /dev/$DEVICE ] ; then
  35.     cd /dev ; log ./MAKEDEV $DEVICE
  36.     fi
  37.     if [ -n "$LINK" ] ; then
  38.     if [ -L $LINK ] ; then rm $LINK ; fi
  39.     if match `uname -r` "2.[2345].*" ; then
  40.         ln -s /dev/$DEVICE $LINK
  41.     else
  42.         ln -s /dev/$CALLOUT $LINK
  43.     fi
  44.     fi
  45.     if [ -x /bin/setserial ] ; then
  46.     # Workaround for serial driver bug
  47.     IRQ=`setserial /dev/$DEVICE | sed -e 's/.*IRQ: //'`
  48.     setserial /dev/$DEVICE irq 0 ; setserial /dev/$DEVICE irq $IRQ
  49.     if [ -n "$SERIAL_OPTS" ] ; then
  50.         log setserial /dev/$DEVICE $SERIAL_OPTS
  51.     fi
  52.     fi
  53.     if [ -n "$INITTAB" ] ; then
  54.     echo "S$NR:12345:respawn:$INITTAB $DEVICE" >> /etc/inittab
  55.     telinit q
  56.     fi
  57.     start_fn $DEVICE
  58.     ;;
  59.  
  60. 'check')
  61.     is_true $NO_CHECK && exit 0
  62.     if [ -n "$INITTAB" ] ; then
  63.     do_fuser -v /dev/$DEVICE /dev/$CALLOUT $LINK | grep -v getty \
  64.         | grep -q /dev/$DEVICE && exit 1
  65.     else
  66.     do_fuser -s /dev/$DEVICE /dev/$CALLOUT $LINK && exit 1
  67.     fi
  68.     ;;
  69.  
  70. 'cksum')
  71.     chk_simple "$NEW_SCHEME,$SOCKET,$INSTANCE" || exit 1
  72.     ;;
  73.     
  74. 'stop')
  75.     if [ -n "$INITTAB" ] ; then
  76.     grep -v $DEVICE /etc/inittab > /etc/inittab.new
  77.     mv /etc/inittab.new /etc/inittab
  78.     telinit q
  79.     fi
  80.     do_fuser -k /dev/$DEVICE /dev/$CALLOUT $LINK > /dev/null
  81.     if [ -L "$LINK" ] ; then rm $LINK ; fi
  82.     stop_fn $DEVICE
  83.     ;;
  84.  
  85. 'suspend')
  86.     do_fuser -k -STOP /dev/$DEVICE /dev/$CALLOUT > /dev/null
  87.     ;;
  88.  
  89. 'resume')
  90.     if [ -n "$SERIAL_OPTS" ] ; then
  91.     setserial /dev/$DEVICE $SERIAL_OPTS
  92.     fi
  93.     do_fuser -k -CONT /dev/$DEVICE /dev/$CALLOUT $LINK > /dev/null
  94.     ;;
  95.  
  96. *)
  97.     usage
  98.     ;;
  99.  
  100. esac
  101.  
  102. exit 0
  103.