Changeset 1db44ea7 in mainline for uspace/app
- Timestamp:
- 2011-09-25T18:46:45Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 36cb22f
- Parents:
- dcc44ca1 (diff), f9d8c3a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/app
- Files:
-
- 2 added
- 7 edited
-
bdsh/cmds/modules/mkfile/mkfile.c (modified) (6 diffs)
-
bdsh/cmds/modules/mount/mount.c (modified) (3 diffs)
-
init/init.c (modified) (4 diffs)
-
vuhid/Makefile (modified) (2 diffs)
-
vuhid/hids/bootkbd.c (modified) (3 diffs)
-
vuhid/hids/logitech_wireless.c (added)
-
vuhid/ifaces.c (modified) (1 diff)
-
vuhid/life.c (added)
-
vuhid/virthid.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/cmds/modules/mkfile/mkfile.c
rdcc44ca1 r1db44ea7 54 54 static struct option const long_options[] = { 55 55 {"size", required_argument, 0, 's'}, 56 {"sparse", no_argument, 0, 'p'}, 56 57 {"help", no_argument, 0, 'h'}, 57 58 {0, 0, 0, 0} … … 69 70 " -h, --help A short option summary\n" 70 71 " -s, --size sz Size of the file\n" 72 " -p, --sparse Create a sparse file\n" 71 73 "\n" 72 74 "Size is a number followed by 'k', 'm' or 'g' for kB, MB, GB.\n" … … 115 117 ssize_t file_size; 116 118 ssize_t total_written; 117 ssize_t to_write, rc ;119 ssize_t to_write, rc, rc2 = 0; 118 120 char *file_name; 119 121 void *buffer; 122 bool create_sparse = false; 120 123 121 124 file_size = 0; … … 124 127 125 128 for (c = 0, optind = 0, opt_ind = 0; c != -1;) { 126 c = getopt_long(argc, argv, " s:h", long_options, &opt_ind);129 c = getopt_long(argc, argv, "ps:h", long_options, &opt_ind); 127 130 switch (c) { 128 131 case 'h': 129 132 help_cmd_mkfile(HELP_LONG); 130 133 return CMD_SUCCESS; 134 case 'p': 135 create_sparse = true; 136 break; 131 137 case 's': 132 138 file_size = read_size(optarg); … … 154 160 printf("%s: failed to create file %s.\n", cmdname, file_name); 155 161 return CMD_FAILURE; 162 } 163 164 if (create_sparse && file_size > 0) { 165 const char byte = 0x00; 166 167 if ((rc2 = lseek(fd, file_size - 1, SEEK_SET)) < 0) 168 goto exit; 169 170 rc2 = write(fd, &byte, sizeof(char)); 171 goto exit; 156 172 } 157 173 … … 174 190 } 175 191 192 free(buffer); 193 exit: 176 194 rc = close(fd); 177 if (rc != 0) { 195 196 if (rc != 0 || rc2 < 0) { 178 197 printf("%s: Error writing file (%zd).\n", cmdname, rc); 179 198 return CMD_FAILURE; 180 199 } 181 182 free(buffer);183 200 184 201 return CMD_SUCCESS; -
uspace/app/bdsh/cmds/modules/mount/mount.c
rdcc44ca1 r1db44ea7 43 43 static struct option const long_options[] = { 44 44 { "help", no_argument, 0, 'h' }, 45 { "instance", required_argument, 0, 'i' }, 45 46 { 0, 0, 0, 0 } 46 47 }; … … 68 69 const char *dev = ""; 69 70 int rc, c, opt_ind; 71 unsigned int instance = 0; 72 bool instance_set = false; 73 char **t_argv; 70 74 71 75 argc = cli_count_args(argv); 72 76 73 77 for (c = 0, optind = 0, opt_ind = 0; c != -1;) { 74 c = getopt_long(argc, argv, " h", long_options, &opt_ind);78 c = getopt_long(argc, argv, "i:h", long_options, &opt_ind); 75 79 switch (c) { 76 80 case 'h': 77 81 help_cmd_mount(HELP_LONG); 78 82 return CMD_SUCCESS; 83 case 'i': 84 instance = (unsigned int) strtol(optarg, NULL, 10); 85 instance_set = true; 86 break; 79 87 } 80 88 } 89 90 if (instance_set) { 91 argc -= 2; 92 t_argv = &argv[2]; 93 } else 94 t_argv = &argv[0]; 81 95 82 96 if ((argc < 3) || (argc > 5)) { … … 86 100 } 87 101 if (argc > 3) 88 dev = argv[3];102 dev = t_argv[3]; 89 103 if (argc == 5) 90 mopts = argv[4];104 mopts = t_argv[4]; 91 105 92 rc = mount( argv[1], argv[2], dev, mopts, 0);106 rc = mount(t_argv[1], t_argv[2], dev, mopts, 0, instance); 93 107 if (rc != EOK) { 94 108 printf("Unable to mount %s filesystem to %s on %s (rc=%d)\n", 95 argv[1], argv[2],argv[3], rc);109 t_argv[1], t_argv[2], t_argv[3], rc); 96 110 return CMD_FAILURE; 97 111 } -
uspace/app/init/init.c
rdcc44ca1 r1db44ea7 121 121 122 122 int rc = mount(fstype, ROOT_MOUNT_POINT, ROOT_DEVICE, opts, 123 IPC_FLAG_BLOCKING );123 IPC_FLAG_BLOCKING, 0); 124 124 return mount_report("Root filesystem", ROOT_MOUNT_POINT, fstype, 125 125 ROOT_DEVICE, rc); … … 138 138 { 139 139 int rc = mount(LOCFS_FS_TYPE, LOCFS_MOUNT_POINT, "", "", 140 IPC_FLAG_BLOCKING );140 IPC_FLAG_BLOCKING, 0); 141 141 return mount_report("Location service filesystem", LOCFS_MOUNT_POINT, 142 142 LOCFS_FS_TYPE, NULL, rc); … … 261 261 static bool mount_tmpfs(void) 262 262 { 263 int rc = mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0 );263 int rc = mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0, 0); 264 264 return mount_report("Temporary filesystem", TMPFS_MOUNT_POINT, 265 265 TMPFS_FS_TYPE, NULL, rc); … … 268 268 static bool mount_data(void) 269 269 { 270 int rc = mount(DATA_FS_TYPE, DATA_MOUNT_POINT, DATA_DEVICE, "wtcache", 0 );270 int rc = mount(DATA_FS_TYPE, DATA_MOUNT_POINT, DATA_DEVICE, "wtcache", 0, 0); 271 271 return mount_report("Data filesystem", DATA_MOUNT_POINT, DATA_FS_TYPE, 272 272 DATA_DEVICE, rc); -
uspace/app/vuhid/Makefile
rdcc44ca1 r1db44ea7 47 47 48 48 SOURCES_INTERFACES = \ 49 hids/bootkbd.c 49 hids/bootkbd.c \ 50 hids/logitech_wireless.c 50 51 51 52 SOURCES = \ … … 53 54 device.c \ 54 55 ifaces.c \ 56 life.c \ 55 57 stdreq.c \ 56 58 $(SOURCES_INTERFACES) -
uspace/app/vuhid/hids/bootkbd.c
rdcc44ca1 r1db44ea7 93 93 0, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 94 94 }; 95 static size_t in_data_count = sizeof(in_data)/INPUT_SIZE; 96 // FIXME - locking 97 static size_t in_data_position = 0; 98 99 static int on_data_in(vuhid_interface_t *iface, 100 void *buffer, size_t buffer_size, size_t *act_buffer_size) 101 { 102 static size_t last_pos = (size_t) -1; 103 size_t pos = in_data_position; 104 if (pos >= in_data_count) { 105 return EBADCHECKSUM; 106 } 107 108 if (last_pos == pos) { 109 return ENAK; 110 } 111 112 if (buffer_size > INPUT_SIZE) { 113 buffer_size = INPUT_SIZE; 114 } 115 116 if (act_buffer_size != NULL) { 117 *act_buffer_size = buffer_size; 118 } 119 120 memcpy(buffer, in_data + pos * INPUT_SIZE, buffer_size); 121 last_pos = pos; 122 123 return EOK; 124 } 95 static vuhid_interface_life_t boot_life = { 96 .data_in = in_data, 97 .data_in_count = sizeof(in_data)/INPUT_SIZE, 98 .data_in_pos_change_delay = 500, 99 .msg_born = "Boot keyboard comes to life...", 100 .msg_die = "Boot keyboard died." 101 }; 125 102 126 103 static int on_data_out(vuhid_interface_t *iface, … … 141 118 } 142 119 143 144 static void live(vuhid_interface_t *iface)145 {146 async_usleep(1000 * 1000 * 5);147 usb_log_debug("Boot keyboard comes to life...\n");148 while (in_data_position < in_data_count) {149 async_usleep(1000 * 500);150 in_data_position++;151 }152 usb_log_debug("Boot keyboard died.\n");153 }154 155 156 120 vuhid_interface_t vuhid_interface_bootkbd = { 157 121 .id = "boot", … … 164 128 165 129 .in_data_size = INPUT_SIZE, 166 .on_data_in = on_data_in,130 .on_data_in = interface_live_on_data_in, 167 131 168 132 .out_data_size = 1, 169 133 .on_data_out = on_data_out, 170 134 171 .live = live,135 .live = interface_life_live, 172 136 137 .interface_data = &boot_life, 173 138 .vuhid_data = NULL 174 139 }; -
uspace/app/vuhid/ifaces.c
rdcc44ca1 r1db44ea7 38 38 39 39 extern vuhid_interface_t vuhid_interface_bootkbd; 40 extern vuhid_interface_t vuhid_interface_logitech_wireless_1; 40 41 41 42 vuhid_interface_t *available_hid_interfaces[] = { 42 43 &vuhid_interface_bootkbd, 44 &vuhid_interface_logitech_wireless_1, 43 45 NULL 44 46 }; -
uspace/app/vuhid/virthid.h
rdcc44ca1 r1db44ea7 82 82 83 83 typedef struct { 84 /** Buffer with data from device to the host. */ 85 uint8_t *data_in; 86 /** Number of items in @c data_in. 87 * The total size of @c data_in buffer shall be 88 * <code>data_in_count * vuhid_interface_t.in_data_size</code>. 89 */ 90 size_t data_in_count; 91 92 /** Current position in the data buffer. */ 93 size_t data_in_pos; 94 /** Previous position. */ 95 size_t data_in_last_pos; 96 97 /** Delay between transition to "next" input buffer (in ms). */ 98 size_t data_in_pos_change_delay; 99 100 /** Message to print when interface becomes alive. */ 101 const char *msg_born; 102 /** Message to print when interface dies. */ 103 const char *msg_die; 104 } vuhid_interface_life_t; 105 106 typedef struct { 84 107 uint8_t length; 85 108 uint8_t type; … … 94 117 void wait_for_interfaces_death(usbvirt_device_t *); 95 118 119 void interface_life_live(vuhid_interface_t *); 120 int interface_live_on_data_in(vuhid_interface_t *, void *, size_t, size_t *); 121 122 96 123 #endif 97 124 /**
Note:
See TracChangeset
for help on using the changeset viewer.
