Subversion Repositories HelenOS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /* Functions for connecting to some services, which is needed for FS. */
  2.  
  3. /* Methods:
  4.  * common_connection:   includes common aspects for connecting to some services
  5.  * con_connection:  connects to SERVICE_CONSOLE
  6.  * rd_connection:   connects to SERVICE_RD
  7.  * fs_connection:   connects to SERVICE_FS
  8.  *
  9.  */
  10.  
  11. #include <ipc/ipc.h>
  12. #include <ipc/services.h>
  13. #include "../fs/fs.h"
  14.  
  15.  
  16. int common_connection(int *phone, int service, int attempts)
  17. {
  18.    
  19.     int i;
  20.  
  21.     if (service <= 0 || attempts <= 0)
  22.         return FALSE;
  23.            
  24.     for (i = 1; i <= attempts; i++) {
  25.         *phone = ipc_connect_me_to(PHONE_NS, service, 0);
  26.        
  27.         if (*phone > 0)
  28.             return TRUE;
  29.        
  30.         usleep(10000);
  31.     }
  32.    
  33.     if (*phone >= 0)
  34.         return TRUE;
  35.  
  36.     return FALSE;
  37. }
  38.  
  39.  
  40. int connect_to_con(int *phone, int attempts)
  41. {
  42.    
  43.     if (common_connection(phone, SERVICE_CONSOLE, attempts))
  44.         return TRUE;
  45.  
  46.     return FALSE;  
  47. }
  48.  
  49. int connect_to_rd(int *phone, int attempts)
  50. {
  51.        
  52.     if (common_connection(phone, SERVICE_RD, attempts))
  53.         return TRUE;
  54.  
  55.     return FALSE;  
  56. }
  57.  
  58. int connect_to_fs(int *phone, int attempts)
  59. {
  60.        
  61.     if (common_connection(phone, SERVICE_FS, attempts))
  62.         return TRUE;
  63.  
  64.     return FALSE;  
  65. }
  66.