diff -r f98f89d0d778 -r c9308eb34c0e lib/common.c --- a/lib/common.c Fri Jul 10 09:38:37 2009 +0000 +++ b/lib/common.c Fri Jul 10 10:07:48 2009 +0000 @@ -50,9 +50,25 @@ /*****************************************************************************/ +ec_master_t *ecrt_request_master(unsigned int master_index) +{ + ec_master_t *master = ecrt_open_master(master_index); + if (master) { + if (ecrt_master_reserve(master) < 0) { + close(master->fd); + free(master); + master = 0; + } + } + + return master; +} + +/*****************************************************************************/ + #define MAX_PATH_LEN 64 -ec_master_t *ecrt_request_master(unsigned int master_index) +ec_master_t *ecrt_open_master(unsigned int master_index) { char path[MAX_PATH_LEN]; ec_master_t *master; @@ -75,14 +91,6 @@ return 0; } - if (ioctl(master->fd, EC_IOCTL_REQUEST, NULL) == -1) { - fprintf(stderr, "Failed to request master %u: %s\n", - master_index, strerror(errno)); - close(master->fd); - free(master); - return 0; - } - return master; }