diff options
| author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-05-02 11:19:55 -0400 |
|---|---|---|
| committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-05-02 11:19:55 -0400 |
| commit | 19fdd6f62388ed4373d28ca55b1c63e2fd62bb2f (patch) | |
| tree | c62267cc060716e796e930e08f8d6c485693edf9 /bin | |
| parent | 9b85a6e707adff71ea3b329756f2b854fbdc6b0b (diff) | |
add be task migration support to rt_launch
Diffstat (limited to 'bin')
| -rw-r--r-- | bin/common.c | 10 | ||||
| -rw-r--r-- | bin/rt_launch.c | 15 |
2 files changed, 21 insertions, 4 deletions
diff --git a/bin/common.c b/bin/common.c new file mode 100644 index 0000000..0a5f5c5 --- /dev/null +++ b/bin/common.c | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #include <stdio.h> | ||
| 2 | #include <errno.h> | ||
| 3 | |||
| 4 | #include "common.h" | ||
| 5 | |||
| 6 | void bail_out(const char* msg) | ||
| 7 | { | ||
| 8 | perror(msg); | ||
| 9 | exit(-1 * errno); | ||
| 10 | } | ||
diff --git a/bin/rt_launch.c b/bin/rt_launch.c index daf91db..66cb21f 100644 --- a/bin/rt_launch.c +++ b/bin/rt_launch.c | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #include <signal.h> | 6 | #include <signal.h> |
| 7 | 7 | ||
| 8 | #include "litmus.h" | 8 | #include "litmus.h" |
| 9 | #include "common.h" | ||
| 9 | 10 | ||
| 10 | typedef struct { | 11 | typedef struct { |
| 11 | int wait; | 12 | int wait; |
| @@ -50,6 +51,7 @@ int main(int argc, char** argv) | |||
| 50 | int ret; | 51 | int ret; |
| 51 | lt_t wcet; | 52 | lt_t wcet; |
| 52 | lt_t period; | 53 | lt_t period; |
| 54 | int migrate = 0; | ||
| 53 | int cpu = 0; | 55 | int cpu = 0; |
| 54 | int opt; | 56 | int opt; |
| 55 | int verbose = 0; | 57 | int verbose = 0; |
| @@ -67,6 +69,7 @@ int main(int argc, char** argv) | |||
| 67 | break; | 69 | break; |
| 68 | case 'p': | 70 | case 'p': |
| 69 | cpu = atoi(optarg); | 71 | cpu = atoi(optarg); |
| 72 | migrate = 1; | ||
| 70 | break; | 73 | break; |
| 71 | case 'c': | 74 | case 'c': |
| 72 | class = str2class(optarg); | 75 | class = str2class(optarg); |
| @@ -102,13 +105,17 @@ int main(int argc, char** argv) | |||
| 102 | info.exec_path = argv[optind + 2]; | 105 | info.exec_path = argv[optind + 2]; |
| 103 | info.argv = argv + optind + 2; | 106 | info.argv = argv + optind + 2; |
| 104 | info.wait = wait; | 107 | info.wait = wait; |
| 108 | if (migrate) { | ||
| 109 | ret = be_migrate_to(cpu); | ||
| 110 | if (ret < 0) | ||
| 111 | bail_out("could not migrate to target partition"); | ||
| 112 | } | ||
| 105 | ret = __create_rt_task(launch, &info, cpu, wcet, period, class); | 113 | ret = __create_rt_task(launch, &info, cpu, wcet, period, class); |
| 106 | 114 | ||
| 107 | 115 | ||
| 108 | if (ret < 0) { | 116 | if (ret < 0) |
| 109 | perror("Could not create rt child process"); | 117 | bail_out("could not create rt child process"); |
| 110 | return 2; | 118 | else if (verbose) |
| 111 | } else if (verbose) | ||
| 112 | printf("%d\n", ret); | 119 | printf("%d\n", ret); |
| 113 | 120 | ||
| 114 | return 0; | 121 | return 0; |
