Changeset b224a3e in mainline
- Timestamp:
- 2012-08-15T23:55:32Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 681a985
- Parents:
- 71b0d4d4 (diff), b8b742e (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. - Files:
-
- 4 added
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
boot/Makefile.common
r71b0d4d4 rb224a3e 108 108 $(USPACE_PATH)/srv/fs/ext4fs/ext4fs \ 109 109 $(USPACE_PATH)/srv/hid/remcons/remcons \ 110 $(USPACE_PATH)/srv/hid/isdv4_tablet/isdv4_tablet \ 110 111 $(USPACE_PATH)/srv/net/ethip/ethip \ 111 112 $(USPACE_PATH)/srv/net/inetsrv/inetsrv \ -
uspace/Makefile
r71b0d4d4 rb224a3e 102 102 srv/hid/console \ 103 103 srv/hid/s3c24xx_ts \ 104 srv/hid/isdv4_tablet \ 104 105 srv/hid/fb \ 105 106 srv/hid/input \ -
uspace/app/edit/edit.c
r71b0d4d4 rb224a3e 126 126 static int file_save_range(char const *fname, spt_t const *spos, 127 127 spt_t const *epos); 128 static char *filename_prompt(char const *prompt, char const *init_value);129 128 static char *range_get_str(spt_t const *spos, spt_t const *epos); 129 130 static char *prompt(char const *prompt, char const *init_value); 130 131 131 132 static void pane_text_display(void); … … 142 143 static void caret_move_word_left(void); 143 144 static void caret_move_word_right(void); 145 static void caret_move_to_line(int row); 146 static void caret_go_to_line_ask(void); 144 147 145 148 static bool selection_active(void); … … 404 407 caret_move_word_left(); 405 408 break; 409 case KC_L: 410 caret_go_to_line_ask(); 411 break; 406 412 default: 407 413 break; … … 520 526 char *fname; 521 527 522 fname = filename_prompt("Save As", old_fname);528 fname = prompt("Save As", old_fname); 523 529 if (fname == NULL) { 524 530 status_display("Save cancelled."); … … 535 541 } 536 542 537 /** Ask for a file name. */538 static char * filename_prompt(char const *prompt, char const *init_value)543 /** Ask for a string. */ 544 static char *prompt(char const *prompt, char const *init_value) 539 545 { 540 546 kbd_event_t ev; … … 842 848 /* Fill until the end of display area. */ 843 849 844 if ( str_length(row_buf) < (unsigned)scr_columns)845 fill = scr_columns - str_length(row_buf);850 if ((unsigned)s_column - 1 < scr_columns) 851 fill = scr_columns - (s_column - 1); 846 852 else 847 853 fill = 0; … … 1077 1083 pane.rflags |= REDRAW_TEXT; 1078 1084 } 1085 1086 /** Change the caret position to a beginning of a given line 1087 */ 1088 static void caret_move_to_line(int row) 1089 { 1090 spt_t pt; 1091 coord_t coord; 1092 int num_rows; 1093 1094 tag_get_pt(&pane.caret_pos, &pt); 1095 spt_get_coord(&pt, &coord); 1096 coord.row = row; 1097 coord.column = 1; 1098 1099 /* Clamp coordinates. */ 1100 if (coord.row < 1) coord.row = 1; 1101 sheet_get_num_rows(&doc.sh, &num_rows); 1102 if (coord.row > num_rows) coord.row = num_rows; 1103 1104 /* 1105 * Select the point before the character at the designated 1106 * coordinates. The character can be wider than one cell (e.g. tab). 1107 */ 1108 sheet_get_cell_pt(&doc.sh, &coord, dir_before, &pt); 1109 sheet_remove_tag(&doc.sh, &pane.caret_pos); 1110 sheet_place_tag(&doc.sh, &pt, &pane.caret_pos); 1111 1112 /* Set the new value for @c ideal_column. */ 1113 spt_get_coord(&pt, &coord); 1114 pane.ideal_column = coord.column; 1115 1116 caret_update(); 1117 } 1118 1119 /** Ask for line and go to it. */ 1120 static void caret_go_to_line_ask(void) 1121 { 1122 char *sline; 1123 1124 sline = prompt("Go to line", ""); 1125 if (sline == NULL) { 1126 status_display("Go to line cancelled."); 1127 return; 1128 } 1129 1130 char *endptr; 1131 int line = strtol(sline, &endptr, 10); 1132 if (*endptr != '\0') { 1133 status_display("Invalid number entered."); 1134 return; 1135 } 1136 1137 caret_move_to_line(line); 1138 } 1139 1079 1140 1080 1141 /** Check for non-empty selection. */ -
uspace/app/sportdmp/sportdmp.c
r71b0d4d4 rb224a3e 140 140 ssize_t i; 141 141 for (i = 0; i < read; i++) { 142 if ((buf[i] >= 32) && (buf[i] < 128)) 143 putchar((wchar_t) buf[i]); 144 else 145 putchar('.'); 146 fflush(stdout); 142 printf("%02hhx ", buf[i]); 147 143 } 144 fflush(stdout); 148 145 } 149 146 -
uspace/drv/bus/usb/usbmast/main.c
r71b0d4d4 rb224a3e 82 82 void *arg); 83 83 84 static int usbmast_bd_open(bd_srv _t *);84 static int usbmast_bd_open(bd_srvs_t *, bd_srv_t *); 85 85 static int usbmast_bd_close(bd_srv_t *); 86 86 static int usbmast_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); … … 100 100 static usbmast_fun_t *bd_srv_usbmast(bd_srv_t *bd) 101 101 { 102 return (usbmast_fun_t *)bd-> arg;102 return (usbmast_fun_t *)bd->srvs->sarg; 103 103 } 104 104 … … 240 240 mfun->lun = lun; 241 241 242 bd_srv _init(&mfun->bd);243 mfun->bd .ops = &usbmast_bd_ops;244 mfun->bd .arg = mfun;242 bd_srvs_init(&mfun->bds); 243 mfun->bds.ops = &usbmast_bd_ops; 244 mfun->bds.sarg = mfun; 245 245 246 246 /* Set up a connection handler. */ … … 311 311 312 312 mfun = (usbmast_fun_t *) ((ddf_fun_t *)arg)->driver_data; 313 bd_conn(iid, icall, &mfun->bd );313 bd_conn(iid, icall, &mfun->bds); 314 314 } 315 315 316 316 /** Open device. */ 317 static int usbmast_bd_open(bd_srv _t *bd)317 static int usbmast_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 318 318 { 319 319 return EOK; -
uspace/drv/bus/usb/usbmast/usbmast.h
r71b0d4d4 rb224a3e 69 69 /** Block size in bytes */ 70 70 size_t block_size; 71 /** Block device serv erstructure */72 bd_srv _t bd;71 /** Block device service structure */ 72 bd_srvs_t bds; 73 73 } usbmast_fun_t; 74 74 -
uspace/drv/char/ns8250/cyclic_buffer.h
r71b0d4d4 rb224a3e 36 36 #define CYCLIC_BUFFER_H_ 37 37 38 #define BUF_LEN 25638 #define BUF_LEN 4096 39 39 40 40 typedef struct cyclic_buffer { -
uspace/drv/char/ns8250/ns8250.c
r71b0d4d4 rb224a3e 82 82 /** Interrupt ID Register definition. */ 83 83 #define NS8250_IID_ACTIVE (1 << 0) 84 #define NS8250_IID_CAUSE_MASK 0x0e 85 #define NS8250_IID_CAUSE_RXSTATUS 0x06 84 86 85 87 /** FIFO Control Register definition. */ … … 179 181 /** The fibril mutex for synchronizing the access to the device. */ 180 182 fibril_mutex_t mutex; 183 /** Indicates that some data has become available */ 184 fibril_condvar_t input_buffer_available; 181 185 /** True if device is removed. */ 182 186 bool removed; … … 238 242 { 239 243 ns8250_t *ns = NS8250(fun); 240 int ret = EOK; 244 int ret = 0; 245 246 if (count == 0) return 0; 241 247 242 248 fibril_mutex_lock(&ns->mutex); 249 while (buf_is_empty(&ns->input_buffer)) 250 fibril_condvar_wait(&ns->input_buffer_available, &ns->mutex); 243 251 while (!buf_is_empty(&ns->input_buffer) && (size_t)ret < count) { 244 252 buf[ret] = (char)buf_pop_front(&ns->input_buffer); … … 460 468 { 461 469 /* Interrupt when data received. */ 462 pio_write_8(®s->ier, NS8250_IER_RXREADY );470 pio_write_8(®s->ier, NS8250_IER_RXREADY | NS8250_IER_RXSTATUS); 463 471 pio_write_8(®s->mcr, NS8250_MCR_DTR | NS8250_MCR_RTS 464 472 | NS8250_MCR_OUT2); … … 499 507 async_exchange_end(exch); 500 508 509 /* Read LSR to clear possible previous LSR interrupt */ 510 pio_read_8(&ns->regs->lsr); 511 501 512 /* Enable interrupt on the serial port. */ 502 513 ns8250_port_interrupts_enable(ns->regs); … … 695 706 /* 8 bits, no parity, two stop bits. */ 696 707 ns8250_port_set_com_props(ns->regs, SERIAL_NO_PARITY, 8, 2); 697 /* Enable FIFO, clear them, with 14-byte threshold. */ 708 /* 709 * Enable FIFO, clear them, with 4-byte threshold for greater 710 * reliability. 711 */ 698 712 pio_write_8(&ns->regs->iid, NS8250_FCR_FIFOENABLE 699 | NS8250_FCR_RXFIFORESET | NS8250_FCR_TXFIFORESET 700 | NS8250_FCR_RXTRIGGERLOW | NS8250_FCR_RXTRIGGERHI);713 | NS8250_FCR_RXFIFORESET | NS8250_FCR_TXFIFORESET 714 | NS8250_FCR_RXTRIGGERLOW); 701 715 /* 702 716 * RTS/DSR set (Request to Send and Data Terminal Ready lines enabled), … … 731 745 bool cont = true; 732 746 747 fibril_mutex_lock(&ns->mutex); 733 748 while (cont) { 734 fibril_mutex_lock(&ns->mutex);735 736 749 cont = ns8250_received(regs); 737 750 if (cont) { … … 739 752 740 753 if (ns->client_connected) { 754 bool buf_was_empty = buf_is_empty(&ns->input_buffer); 741 755 if (!buf_push_back(&ns->input_buffer, val)) { 742 756 ddf_msg(LVL_WARN, "Buffer overflow on " 743 757 "%s.", ns->dev->name); 758 break; 744 759 } else { 745 760 ddf_msg(LVL_DEBUG2, "Character %c saved " 746 761 "to the buffer of %s.", 747 762 val, ns->dev->name); 763 if (buf_was_empty) 764 fibril_condvar_broadcast(&ns->input_buffer_available); 748 765 } 749 766 } 750 767 } 751 752 fibril_mutex_unlock(&ns->mutex); 753 fibril_yield(); 754 } 768 } 769 fibril_mutex_unlock(&ns->mutex); 770 fibril_yield(); 755 771 } 756 772 757 773 /** The interrupt handler. 758 774 * 759 * The serial port is initialized to interrupt when some data come, so the 760 * interrupt is handled by reading the incomming data. 775 * The serial port is initialized to interrupt when some data come or line 776 * status register changes, so the interrupt is handled by reading the incoming 777 * data and reading the line status register. 761 778 * 762 779 * @param dev The serial port device. … … 765 782 ipc_call_t *icall) 766 783 { 767 ns8250_read_from_device(NS8250_FROM_DEV(dev)); 784 ns8250_t *ns = NS8250_FROM_DEV(dev); 785 786 uint8_t iir = pio_read_8(&ns->regs->iid); 787 if ((iir & NS8250_IID_CAUSE_MASK) == NS8250_IID_CAUSE_RXSTATUS) { 788 uint8_t lsr = pio_read_8(&ns->regs->lsr); 789 if (lsr & NS8250_LSR_OE) { 790 ddf_msg(LVL_WARN, "Overrun error on %s", ns->dev->name); 791 } 792 } 793 794 ns8250_read_from_device(ns); 768 795 } 769 796 … … 811 838 812 839 fibril_mutex_initialize(&ns->mutex); 840 fibril_condvar_initialize(&ns->input_buffer_available); 813 841 ns->dev = dev; 814 842 … … 1053 1081 static void ns8250_init(void) 1054 1082 { 1055 ddf_log_init(NAME, LVL_ ERROR);1083 ddf_log_init(NAME, LVL_WARN); 1056 1084 1057 1085 ns8250_dev_ops.open = &ns8250_open; -
uspace/lib/c/generic/bd_srv.c
r71b0d4d4 rb224a3e 67 67 } 68 68 69 if (srv-> ops->read_blocks == NULL) {69 if (srv->srvs->ops->read_blocks == NULL) { 70 70 async_answer_0(rcallid, ENOTSUP); 71 71 async_answer_0(callid, ENOTSUP); … … 73 73 } 74 74 75 rc = srv-> ops->read_blocks(srv, ba, cnt, buf, size);75 rc = srv->srvs->ops->read_blocks(srv, ba, cnt, buf, size); 76 76 if (rc != EOK) { 77 77 async_answer_0(rcallid, ENOMEM); … … 109 109 } 110 110 111 if (srv-> ops->read_toc == NULL) {111 if (srv->srvs->ops->read_toc == NULL) { 112 112 async_answer_0(rcallid, ENOTSUP); 113 113 async_answer_0(callid, ENOTSUP); … … 115 115 } 116 116 117 rc = srv-> ops->read_toc(srv, session, buf, size);117 rc = srv->srvs->ops->read_toc(srv, session, buf, size); 118 118 if (rc != EOK) { 119 119 async_answer_0(rcallid, ENOMEM); … … 146 146 } 147 147 148 if (srv-> ops->write_blocks == NULL) {149 async_answer_0(callid, ENOTSUP); 150 return; 151 } 152 153 rc = srv-> ops->write_blocks(srv, ba, cnt, data, size);148 if (srv->srvs->ops->write_blocks == NULL) { 149 async_answer_0(callid, ENOTSUP); 150 return; 151 } 152 153 rc = srv->srvs->ops->write_blocks(srv, ba, cnt, data, size); 154 154 free(data); 155 155 async_answer_0(callid, rc); … … 162 162 size_t block_size; 163 163 164 if (srv-> ops->get_block_size == NULL) {165 async_answer_0(callid, ENOTSUP); 166 return; 167 } 168 169 rc = srv-> ops->get_block_size(srv, &block_size);164 if (srv->srvs->ops->get_block_size == NULL) { 165 async_answer_0(callid, ENOTSUP); 166 return; 167 } 168 169 rc = srv->srvs->ops->get_block_size(srv, &block_size); 170 170 async_answer_1(callid, rc, block_size); 171 171 } … … 177 177 aoff64_t num_blocks; 178 178 179 if (srv-> ops->get_num_blocks == NULL) {180 async_answer_0(callid, ENOTSUP); 181 return; 182 } 183 184 rc = srv-> ops->get_num_blocks(srv, &num_blocks);179 if (srv->srvs->ops->get_num_blocks == NULL) { 180 async_answer_0(callid, ENOTSUP); 181 return; 182 } 183 184 rc = srv->srvs->ops->get_num_blocks(srv, &num_blocks); 185 185 async_answer_2(callid, rc, LOWER32(num_blocks), UPPER32(num_blocks)); 186 186 } 187 187 188 void bd_srv_init(bd_srv_t *srv) 189 { 190 fibril_mutex_initialize(&srv->lock); 191 srv->connected = false; 192 srv->ops = NULL; 193 srv->arg = NULL; 194 srv->client_sess = NULL; 195 } 196 197 int bd_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg) 198 { 199 bd_srv_t *srv = (bd_srv_t *)arg; 200 int rc; 201 202 fibril_mutex_lock(&srv->lock); 203 if (srv->connected) { 204 fibril_mutex_unlock(&srv->lock); 205 async_answer_0(iid, EBUSY); 206 return EBUSY; 207 } 208 209 srv->connected = true; 210 fibril_mutex_unlock(&srv->lock); 188 static bd_srv_t *bd_srv_create(bd_srvs_t *srvs) 189 { 190 bd_srv_t *srv; 191 192 srv = calloc(1, sizeof(srv)); 193 if (srv == NULL) 194 return NULL; 195 196 srv->srvs = srvs; 197 return srv; 198 } 199 200 void bd_srvs_init(bd_srvs_t *srvs) 201 { 202 srvs->ops = NULL; 203 srvs->sarg = NULL; 204 } 205 206 int bd_conn(ipc_callid_t iid, ipc_call_t *icall, bd_srvs_t *srvs) 207 { 208 bd_srv_t *srv; 209 int rc; 211 210 212 211 /* Accept the connection */ 213 212 async_answer_0(iid, EOK); 213 214 srv = bd_srv_create(srvs); 215 if (srv == NULL) 216 return ENOMEM; 214 217 215 218 async_sess_t *sess = async_callback_receive(EXCHANGE_SERIALIZE); … … 219 222 srv->client_sess = sess; 220 223 221 rc = srv ->ops->open(srv);224 rc = srvs->ops->open(srvs, srv); 222 225 if (rc != EOK) 223 226 return rc; … … 230 233 if (!method) { 231 234 /* The other side has hung up */ 232 fibril_mutex_lock(&srv->lock);233 srv->connected = false;234 fibril_mutex_unlock(&srv->lock);235 235 async_answer_0(callid, EOK); 236 236 break; … … 258 258 } 259 259 260 return srv->ops->close(srv); 260 rc = srvs->ops->close(srv); 261 free(srv); 262 263 return rc; 261 264 } 262 265 -
uspace/lib/c/include/bd_srv.h
r71b0d4d4 rb224a3e 36 36 #define LIBC_BD_SRV_H_ 37 37 38 #include <adt/list.h> 38 39 #include <async.h> 39 40 #include <fibril_synch.h> … … 43 44 typedef struct bd_ops bd_ops_t; 44 45 46 /** Service setup (per sevice) */ 45 47 typedef struct { 46 fibril_mutex_t lock;47 bool connected;48 48 bd_ops_t *ops; 49 void *arg; 49 void *sarg; 50 } bd_srvs_t; 51 52 /** Server structure (per client session) */ 53 typedef struct { 54 bd_srvs_t *srvs; 50 55 async_sess_t *client_sess; 56 void *carg; 51 57 } bd_srv_t; 52 58 53 59 typedef struct bd_ops { 54 int (*open)(bd_srv _t *);60 int (*open)(bd_srvs_t *, bd_srv_t *); 55 61 int (*close)(bd_srv_t *); 56 62 int (*read_blocks)(bd_srv_t *, aoff64_t, size_t, void *, size_t); … … 61 67 } bd_ops_t; 62 68 63 extern void bd_srv _init(bd_srv_t *);69 extern void bd_srvs_init(bd_srvs_t *); 64 70 65 extern int bd_conn(ipc_callid_t, ipc_call_t *, void*);71 extern int bd_conn(ipc_callid_t, ipc_call_t *, bd_srvs_t *); 66 72 67 73 #endif -
uspace/lib/c/include/ipc/input.h
r71b0d4d4 rb224a3e 46 46 INPUT_EVENT_KEY = IPC_FIRST_USER_METHOD, 47 47 INPUT_EVENT_MOVE, 48 INPUT_EVENT_ABS_MOVE, 48 49 INPUT_EVENT_BUTTON 49 50 } input_notif_t; -
uspace/lib/c/include/ipc/mouseev.h
r71b0d4d4 rb224a3e 47 47 typedef enum { 48 48 MOUSEEV_MOVE_EVENT = IPC_FIRST_USER_METHOD, 49 MOUSEEV_ABS_MOVE_EVENT, 49 50 MOUSEEV_BUTTON_EVENT 50 51 } mouseev_notif_t; -
uspace/srv/bd/ata_bd/ata_bd.c
r71b0d4d4 rb224a3e 104 104 static void ata_bd_connection(ipc_callid_t iid, ipc_call_t *icall, void *); 105 105 106 static int ata_bd_open(bd_srv _t *);106 static int ata_bd_open(bd_srvs_t *, bd_srv_t *); 107 107 static int ata_bd_close(bd_srv_t *); 108 108 static int ata_bd_read_blocks(bd_srv_t *, uint64_t ba, size_t cnt, void *buf, … … 114 114 static int ata_bd_get_num_blocks(bd_srv_t *, aoff64_t *); 115 115 116 static int ata_rcmd_read( int disk_id, uint64_t ba, size_t cnt,116 static int ata_rcmd_read(disk_t *disk, uint64_t ba, size_t cnt, 117 117 void *buf); 118 static int ata_rcmd_write( int disk_id, uint64_t ba, size_t cnt,118 static int ata_rcmd_write(disk_t *disk, uint64_t ba, size_t cnt, 119 119 const void *buf); 120 120 static int disk_init(disk_t *d, int disk_id); 121 static int drive_identify( int drive_id, void *buf);122 static int identify_pkt_dev( int dev_idx, void *buf);123 static int ata_cmd_packet( int dev_idx, const void *cpkt, size_t cpkt_size,121 static int drive_identify(disk_t *disk, void *buf); 122 static int identify_pkt_dev(disk_t *disk, void *buf); 123 static int ata_cmd_packet(disk_t *disk, const void *cpkt, size_t cpkt_size, 124 124 void *obuf, size_t obuf_size); 125 static int ata_pcmd_inquiry( int dev_idx, void *obuf, size_t obuf_size);126 static int ata_pcmd_read_12( int dev_idx, uint64_t ba, size_t cnt,125 static int ata_pcmd_inquiry(disk_t *disk, void *obuf, size_t obuf_size); 126 static int ata_pcmd_read_12(disk_t *disk, uint64_t ba, size_t cnt, 127 127 void *obuf, size_t obuf_size); 128 static int ata_pcmd_read_toc( int dev_idx, uint8_t ses,128 static int ata_pcmd_read_toc(disk_t *disk, uint8_t ses, 129 129 void *obuf, size_t obuf_size); 130 130 static void disk_print_summary(disk_t *d); … … 146 146 static disk_t *bd_srv_disk(bd_srv_t *bd) 147 147 { 148 return (disk_t *)bd->arg; 148 return (disk_t *)bd->srvs->sarg; 149 } 150 151 static int disk_dev_idx(disk_t *disk) 152 { 153 return (disk->disk_id & 1); 149 154 } 150 155 … … 296 301 { 297 302 service_id_t dsid; 298 int disk_id, i; 303 int i; 304 disk_t *disk; 299 305 300 306 /* Get the device service ID. */ … … 302 308 303 309 /* Determine which disk device is the client connecting to. */ 304 disk _id = -1;310 disk = NULL; 305 311 for (i = 0; i < MAX_DISKS; i++) 306 312 if (ata_disk[i].service_id == dsid) 307 disk _id = i;308 309 if (disk _id < 0 || ata_disk[disk_id].present == false) {313 disk = &ata_disk[i]; 314 315 if (disk == NULL || disk->present == false) { 310 316 async_answer_0(iid, EINVAL); 311 317 return; 312 318 } 313 319 314 bd_conn(iid, icall, & ata_disk[disk_id].bd);320 bd_conn(iid, icall, &disk->bds); 315 321 } 316 322 … … 336 342 fibril_mutex_initialize(&d->lock); 337 343 338 bd_srv _init(&d->bd);339 d->bd .ops = &ata_bd_ops;340 d->bd .arg = d;344 bd_srvs_init(&d->bds); 345 d->bds.ops = &ata_bd_ops; 346 d->bds.sarg = d; 341 347 342 348 /* Try identify command. */ 343 rc = drive_identify(d isk_id, &idata);349 rc = drive_identify(d, &idata); 344 350 if (rc == EOK) { 345 351 /* Success. It's a register (non-packet) device. */ … … 361 367 362 368 if (bc == PDEV_SIGNATURE_BC) { 363 rc = identify_pkt_dev(d isk_id, &idata);369 rc = identify_pkt_dev(d, &idata); 364 370 if (rc == EOK) { 365 371 /* We have a packet device. */ … … 445 451 if (d->dev_type == ata_pkt_dev) { 446 452 /* Send inquiry. */ 447 rc = ata_pcmd_inquiry( 0, &inq_data, sizeof(inq_data));453 rc = ata_pcmd_inquiry(d, &inq_data, sizeof(inq_data)); 448 454 if (rc != EOK) { 449 455 printf("Device inquiry failed.\n"); … … 467 473 } 468 474 469 static int ata_bd_open(bd_srv _t *bd)475 static int ata_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 470 476 { 471 477 return EOK; … … 488 494 489 495 while (cnt > 0) { 490 if (disk->dev_type == ata_reg_dev) 491 rc = ata_rcmd_read(disk ->disk_id, ba, 1, buf);492 else493 rc = ata_pcmd_read_12(disk ->disk_id, ba, 1, buf,496 if (disk->dev_type == ata_reg_dev) { 497 rc = ata_rcmd_read(disk, ba, 1, buf); 498 } else { 499 rc = ata_pcmd_read_12(disk, ba, 1, buf, 494 500 disk->block_size); 501 } 495 502 496 503 if (rc != EOK) … … 510 517 disk_t *disk = bd_srv_disk(bd); 511 518 512 return ata_pcmd_read_toc(disk ->disk_id, session, buf, size);519 return ata_pcmd_read_toc(disk, session, buf, size); 513 520 } 514 521 … … 527 534 528 535 while (cnt > 0) { 529 rc = ata_rcmd_write(disk ->disk_id, ba, 1, buf);536 rc = ata_rcmd_write(disk, ba, 1, buf); 530 537 if (rc != EOK) 531 538 return rc; … … 562 569 * whether an ATA device is present and if so, to determine its parameters. 563 570 * 564 * @param disk _id Device ID, 0 or 1.571 * @param disk Disk 565 572 * @param buf Pointer to a 512-byte buffer. 566 573 * … … 568 575 * not present). EIO if device responds with error. 569 576 */ 570 static int drive_identify( int disk_id, void *buf)577 static int drive_identify(disk_t *disk, void *buf) 571 578 { 572 579 uint16_t data; … … 575 582 size_t i; 576 583 577 drv_head = ((disk_ id!= 0) ? DHR_DRV : 0);584 drv_head = ((disk_dev_idx(disk) != 0) ? DHR_DRV : 0); 578 585 579 586 if (wait_status(0, ~SR_BSY, NULL, TIMEOUT_PROBE) != EOK) … … 621 628 * whether an ATAPI device is present and if so, to determine its parameters. 622 629 * 623 * @param d ev_idx Device index, 0 or 1.630 * @param disk Disk 624 631 * @param buf Pointer to a 512-byte buffer. 625 632 */ 626 static int identify_pkt_dev( int dev_idx, void *buf)633 static int identify_pkt_dev(disk_t *disk, void *buf) 627 634 { 628 635 uint16_t data; … … 631 638 size_t i; 632 639 633 drv_head = ((d ev_idx!= 0) ? DHR_DRV : 0);640 drv_head = ((disk_dev_idx(disk) != 0) ? DHR_DRV : 0); 634 641 635 642 if (wait_status(0, ~SR_BSY, NULL, TIMEOUT_PROBE) != EOK) … … 666 673 * Only data-in commands are supported (e.g. inquiry, read). 667 674 * 668 * @param d ev_idx Device index (0 or 1)675 * @param disk Disk 669 676 * @param obuf Buffer for storing data read from device 670 677 * @param obuf_size Size of obuf in bytes … … 672 679 * @return EOK on success, EIO on error. 673 680 */ 674 static int ata_cmd_packet( int dev_idx, const void *cpkt, size_t cpkt_size,681 static int ata_cmd_packet(disk_t *disk, const void *cpkt, size_t cpkt_size, 675 682 void *obuf, size_t obuf_size) 676 683 { … … 678 685 uint8_t status; 679 686 uint8_t drv_head; 680 disk_t *d;681 687 size_t data_size; 682 688 uint16_t val; 683 689 684 d = &ata_disk[dev_idx]; 685 fibril_mutex_lock(&d->lock); 690 fibril_mutex_lock(&disk->lock); 686 691 687 692 /* New value for Drive/Head register */ 688 693 drv_head = 689 ((d ev_idx!= 0) ? DHR_DRV : 0);694 ((disk_dev_idx(disk) != 0) ? DHR_DRV : 0); 690 695 691 696 if (wait_status(0, ~SR_BSY, NULL, TIMEOUT_PROBE) != EOK) { 692 fibril_mutex_unlock(&d ->lock);697 fibril_mutex_unlock(&disk->lock); 693 698 return EIO; 694 699 } … … 697 702 698 703 if (wait_status(0, ~(SR_BSY|SR_DRQ), NULL, TIMEOUT_BSY) != EOK) { 699 fibril_mutex_unlock(&d ->lock);704 fibril_mutex_unlock(&disk->lock); 700 705 return EIO; 701 706 } … … 708 713 709 714 if (wait_status(SR_DRQ, ~SR_BSY, &status, TIMEOUT_BSY) != EOK) { 710 fibril_mutex_unlock(&d ->lock);715 fibril_mutex_unlock(&disk->lock); 711 716 return EIO; 712 717 } … … 717 722 718 723 if (wait_status(0, ~SR_BSY, &status, TIMEOUT_BSY) != EOK) { 719 fibril_mutex_unlock(&d ->lock);724 fibril_mutex_unlock(&disk->lock); 720 725 return EIO; 721 726 } 722 727 723 728 if ((status & SR_DRQ) == 0) { 724 fibril_mutex_unlock(&d ->lock);729 fibril_mutex_unlock(&disk->lock); 725 730 return EIO; 726 731 } … … 733 738 if (data_size > obuf_size) { 734 739 /* Output buffer is too small to store data. */ 735 fibril_mutex_unlock(&d ->lock);740 fibril_mutex_unlock(&disk->lock); 736 741 return EIO; 737 742 } … … 744 749 745 750 if (status & SR_ERR) { 746 fibril_mutex_unlock(&d ->lock);747 return EIO; 748 } 749 750 fibril_mutex_unlock(&d ->lock);751 fibril_mutex_unlock(&disk->lock); 752 return EIO; 753 } 754 755 fibril_mutex_unlock(&disk->lock); 751 756 752 757 return EOK; … … 755 760 /** Issue ATAPI Inquiry. 756 761 * 757 * @param d ev_idx Device index (0 or 1)762 * @param disk Disk 758 763 * @param obuf Buffer for storing inquiry data read from device 759 764 * @param obuf_size Size of obuf in bytes … … 761 766 * @return EOK on success, EIO on error. 762 767 */ 763 static int ata_pcmd_inquiry( int dev_idx, void *obuf, size_t obuf_size)768 static int ata_pcmd_inquiry(disk_t *disk, void *obuf, size_t obuf_size) 764 769 { 765 770 ata_pcmd_inquiry_t cp; … … 771 776 cp.alloc_len = min(obuf_size, 0xff); /* Allocation length */ 772 777 773 rc = ata_cmd_packet( 0, &cp, sizeof(cp), obuf, obuf_size);778 rc = ata_cmd_packet(disk, &cp, sizeof(cp), obuf, obuf_size); 774 779 if (rc != EOK) 775 780 return rc; … … 783 788 * function will fail. 784 789 * 785 * @param d ev_idx Device index (0 or 1)790 * @param disk Disk 786 791 * @param ba Starting block address 787 792 * @param cnt Number of blocks to read … … 791 796 * @return EOK on success, EIO on error. 792 797 */ 793 static int ata_pcmd_read_12( int dev_idx, uint64_t ba, size_t cnt,798 static int ata_pcmd_read_12(disk_t *disk, uint64_t ba, size_t cnt, 794 799 void *obuf, size_t obuf_size) 795 800 { … … 806 811 cp.nblocks = host2uint32_t_be(cnt); 807 812 808 rc = ata_cmd_packet( 0, &cp, sizeof(cp), obuf, obuf_size);813 rc = ata_cmd_packet(disk, &cp, sizeof(cp), obuf, obuf_size); 809 814 if (rc != EOK) 810 815 return rc; … … 823 828 * function will fail. 824 829 * 825 * @param d ev_idx Device index (0 or 1)830 * @param disk Disk 826 831 * @param session Starting session 827 832 * @param obuf Buffer for storing inquiry data read from device … … 830 835 * @return EOK on success, EIO on error. 831 836 */ 832 static int ata_pcmd_read_toc( int dev_idx, uint8_t session, void *obuf,837 static int ata_pcmd_read_toc(disk_t *disk, uint8_t session, void *obuf, 833 838 size_t obuf_size) 834 839 { … … 854 859 /** Read a physical from the device. 855 860 * 856 * @param disk _id Device index (0 or 1)861 * @param disk Disk 857 862 * @param ba Address the first block. 858 863 * @param cnt Number of blocks to transfer. … … 861 866 * @return EOK on success, EIO on error. 862 867 */ 863 static int ata_rcmd_read( int disk_id, uint64_t ba, size_t blk_cnt,868 static int ata_rcmd_read(disk_t *disk, uint64_t ba, size_t blk_cnt, 864 869 void *buf) 865 870 { … … 868 873 uint8_t status; 869 874 uint8_t drv_head; 870 disk_t *d;871 875 block_coord_t bc; 872 876 873 d = &ata_disk[disk_id];874 875 877 /* Silence warning. */ 876 878 memset(&bc, 0, sizeof(bc)); 877 879 878 880 /* Compute block coordinates. */ 879 if (coord_calc(d , ba, &bc) != EOK)881 if (coord_calc(disk, ba, &bc) != EOK) 880 882 return EINVAL; 881 883 882 884 /* New value for Drive/Head register */ 883 885 drv_head = 884 ((disk_ id!= 0) ? DHR_DRV : 0) |885 ((d ->amode != am_chs) ? DHR_LBA : 0) |886 ((disk_dev_idx(disk) != 0) ? DHR_DRV : 0) | 887 ((disk->amode != am_chs) ? DHR_LBA : 0) | 886 888 (bc.h & 0x0f); 887 889 888 fibril_mutex_lock(&d ->lock);890 fibril_mutex_lock(&disk->lock); 889 891 890 892 /* Program a Read Sectors operation. */ 891 893 892 894 if (wait_status(0, ~SR_BSY, NULL, TIMEOUT_BSY) != EOK) { 893 fibril_mutex_unlock(&d ->lock);895 fibril_mutex_unlock(&disk->lock); 894 896 return EIO; 895 897 } … … 898 900 899 901 if (wait_status(SR_DRDY, ~SR_BSY, NULL, TIMEOUT_DRDY) != EOK) { 900 fibril_mutex_unlock(&d ->lock);902 fibril_mutex_unlock(&disk->lock); 901 903 return EIO; 902 904 } … … 905 907 coord_sc_program(&bc, 1); 906 908 907 pio_write_8(&cmd->command, d ->amode == am_lba48 ?909 pio_write_8(&cmd->command, disk->amode == am_lba48 ? 908 910 CMD_READ_SECTORS_EXT : CMD_READ_SECTORS); 909 911 910 912 if (wait_status(0, ~SR_BSY, &status, TIMEOUT_BSY) != EOK) { 911 fibril_mutex_unlock(&d ->lock);913 fibril_mutex_unlock(&disk->lock); 912 914 return EIO; 913 915 } … … 916 918 /* Read data from the device buffer. */ 917 919 918 for (i = 0; i < ata_disk[disk_id].block_size / 2; i++) {920 for (i = 0; i < disk->block_size / 2; i++) { 919 921 data = pio_read_16(&cmd->data_port); 920 922 ((uint16_t *) buf)[i] = data; … … 925 927 return EIO; 926 928 927 fibril_mutex_unlock(&d ->lock);929 fibril_mutex_unlock(&disk->lock); 928 930 return EOK; 929 931 } … … 931 933 /** Write a physical block to the device. 932 934 * 933 * @param disk _id Device index (0 or 1)935 * @param disk Disk 934 936 * @param ba Address of the first block. 935 937 * @param cnt Number of blocks to transfer. … … 938 940 * @return EOK on success, EIO on error. 939 941 */ 940 static int ata_rcmd_write( int disk_id, uint64_t ba, size_t cnt,942 static int ata_rcmd_write(disk_t *disk, uint64_t ba, size_t cnt, 941 943 const void *buf) 942 944 { … … 944 946 uint8_t status; 945 947 uint8_t drv_head; 946 disk_t *d;947 948 block_coord_t bc; 948 949 949 d = &ata_disk[disk_id];950 951 950 /* Silence warning. */ 952 951 memset(&bc, 0, sizeof(bc)); 953 952 954 953 /* Compute block coordinates. */ 955 if (coord_calc(d , ba, &bc) != EOK)954 if (coord_calc(disk, ba, &bc) != EOK) 956 955 return EINVAL; 957 956 958 957 /* New value for Drive/Head register */ 959 958 drv_head = 960 ((disk_ id!= 0) ? DHR_DRV : 0) |961 ((d ->amode != am_chs) ? DHR_LBA : 0) |959 ((disk_dev_idx(disk) != 0) ? DHR_DRV : 0) | 960 ((disk->amode != am_chs) ? DHR_LBA : 0) | 962 961 (bc.h & 0x0f); 963 962 964 fibril_mutex_lock(&d ->lock);963 fibril_mutex_lock(&disk->lock); 965 964 966 965 /* Program a Write Sectors operation. */ 967 966 968 967 if (wait_status(0, ~SR_BSY, NULL, TIMEOUT_BSY) != EOK) { 969 fibril_mutex_unlock(&d ->lock);968 fibril_mutex_unlock(&disk->lock); 970 969 return EIO; 971 970 } … … 974 973 975 974 if (wait_status(SR_DRDY, ~SR_BSY, NULL, TIMEOUT_DRDY) != EOK) { 976 fibril_mutex_unlock(&d ->lock);975 fibril_mutex_unlock(&disk->lock); 977 976 return EIO; 978 977 } … … 981 980 coord_sc_program(&bc, 1); 982 981 983 pio_write_8(&cmd->command, d ->amode == am_lba48 ?982 pio_write_8(&cmd->command, disk->amode == am_lba48 ? 984 983 CMD_WRITE_SECTORS_EXT : CMD_WRITE_SECTORS); 985 984 986 985 if (wait_status(0, ~SR_BSY, &status, TIMEOUT_BSY) != EOK) { 987 fibril_mutex_unlock(&d ->lock);986 fibril_mutex_unlock(&disk->lock); 988 987 return EIO; 989 988 } … … 992 991 /* Write data to the device buffer. */ 993 992 994 for (i = 0; i < d ->block_size / 2; i++) {993 for (i = 0; i < disk->block_size / 2; i++) { 995 994 pio_write_16(&cmd->data_port, ((uint16_t *) buf)[i]); 996 995 } 997 996 } 998 997 999 fibril_mutex_unlock(&d ->lock);998 fibril_mutex_unlock(&disk->lock); 1000 999 1001 1000 if (status & SR_ERR) -
uspace/srv/bd/ata_bd/ata_bd.h
r71b0d4d4 rb224a3e 119 119 service_id_t service_id; 120 120 int disk_id; 121 bd_srv _t bd;121 bd_srvs_t bds; 122 122 } disk_t; 123 123 -
uspace/srv/bd/file_bd/file_bd.c
r71b0d4d4 rb224a3e 62 62 63 63 static service_id_t service_id; 64 static bd_srv _t bd_srv;64 static bd_srvs_t bd_srvs; 65 65 static fibril_mutex_t dev_lock; 66 66 … … 69 69 static void file_bd_connection(ipc_callid_t iid, ipc_call_t *icall, void *); 70 70 71 static int file_bd_open(bd_srv _t *);71 static int file_bd_open(bd_srvs_t *, bd_srv_t *); 72 72 static int file_bd_close(bd_srv_t *); 73 73 static int file_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); … … 154 154 static int file_bd_init(const char *fname) 155 155 { 156 bd_srv _init(&bd_srv);157 bd_srv .ops = &file_bd_ops;156 bd_srvs_init(&bd_srvs); 157 bd_srvs.ops = &file_bd_ops; 158 158 159 159 async_set_client_connection(file_bd_connection); … … 188 188 static void file_bd_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg) 189 189 { 190 bd_conn(iid, icall, &bd_srv );190 bd_conn(iid, icall, &bd_srvs); 191 191 } 192 192 193 193 /** Open device. */ 194 static int file_bd_open(bd_srv _t *bd)194 static int file_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 195 195 { 196 196 return EOK; -
uspace/srv/bd/gxe_bd/gxe_bd.c
r71b0d4d4 rb224a3e 88 88 /** GXE block device soft state */ 89 89 typedef struct { 90 /** Block device serv erstructure */91 bd_srv _t bd;90 /** Block device service structure */ 91 bd_srvs_t bds; 92 92 int disk_id; 93 93 } gxe_bd_t; … … 109 109 static int gxe_bd_write_block(int disk_id, uint64_t ba, const void *buf); 110 110 111 static int gxe_bd_open(bd_srv _t *);111 static int gxe_bd_open(bd_srvs_t *, bd_srv_t *); 112 112 static int gxe_bd_close(bd_srv_t *); 113 113 static int gxe_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); … … 127 127 static gxe_bd_t *bd_srv_gxe(bd_srv_t *bd) 128 128 { 129 return (gxe_bd_t *)bd-> arg;129 return (gxe_bd_t *)bd->srvs->sarg; 130 130 } 131 131 … … 166 166 char name[16]; 167 167 168 bd_srv _init(&gxe_bd[i].bd);169 gxe_bd[i].bd .ops = &gxe_bd_ops;170 gxe_bd[i].bd .arg = (void *)&gxe_bd[i];168 bd_srvs_init(&gxe_bd[i].bds); 169 gxe_bd[i].bds.ops = &gxe_bd_ops; 170 gxe_bd[i].bds.sarg = (void *)&gxe_bd[i]; 171 171 172 172 snprintf(name, 16, "%s/disk%u", NAMESPACE, i); … … 203 203 } 204 204 205 bd_conn(iid, icall, &gxe_bd[disk_id].bd );205 bd_conn(iid, icall, &gxe_bd[disk_id].bds); 206 206 } 207 207 208 208 /** Open device. */ 209 static int gxe_bd_open(bd_srv _t *bd)209 static int gxe_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 210 210 { 211 211 return EOK; -
uspace/srv/bd/part/guid_part/guid_part.c
r71b0d4d4 rb224a3e 83 83 /** Service representing the partition (outbound device) */ 84 84 service_id_t dsid; 85 /** Block device serv erstructure */86 bd_srv _t bd;85 /** Block device service structure */ 86 bd_srvs_t bds; 87 87 /** Points to next partition structure. */ 88 88 struct part *next; … … 104 104 static int gpt_bsa_translate(part_t *p, aoff64_t ba, size_t cnt, aoff64_t *gba); 105 105 106 static int gpt_bd_open(bd_srv _t *);106 static int gpt_bd_open(bd_srvs_t *, bd_srv_t *); 107 107 static int gpt_bd_close(bd_srv_t *); 108 108 static int gpt_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); … … 122 122 static part_t *bd_srv_part(bd_srv_t *bd) 123 123 { 124 return (part_t *)bd-> arg;124 return (part_t *)bd->srvs->sarg; 125 125 } 126 126 … … 325 325 } 326 326 327 bd_srv _init(&part->bd);328 part->bd .ops = &gpt_bd_ops;329 part->bd .arg = part;327 bd_srvs_init(&part->bds); 328 part->bds.ops = &gpt_bd_ops; 329 part->bds.sarg = part; 330 330 331 331 part->dsid = 0; … … 357 357 assert(part->present == true); 358 358 359 bd_conn(iid, icall, &part->bd );359 bd_conn(iid, icall, &part->bds); 360 360 } 361 361 362 362 /** Open device. */ 363 static int gpt_bd_open(bd_srv _t *bd)363 static int gpt_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 364 364 { 365 365 return EOK; -
uspace/srv/bd/part/mbr_part/mbr_part.c
r71b0d4d4 rb224a3e 100 100 /** Device representing the partition (outbound device) */ 101 101 service_id_t dsid; 102 /** Block device serv er structure */103 bd_srv _t bd;102 /** Block device service sturcture */ 103 bd_srvs_t bds; 104 104 /** Points to next partition structure. */ 105 105 struct part *next; … … 154 154 static int mbr_bsa_translate(part_t *p, uint64_t ba, size_t cnt, uint64_t *gba); 155 155 156 static int mbr_bd_open(bd_srv _t *);156 static int mbr_bd_open(bd_srvs_t *, bd_srv_t *); 157 157 static int mbr_bd_close(bd_srv_t *); 158 158 static int mbr_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); … … 172 172 static part_t *bd_srv_part(bd_srv_t *bd) 173 173 { 174 return (part_t *)bd-> arg;174 return (part_t *)bd->srvs->sarg; 175 175 } 176 176 … … 402 402 part->present = (pte->ptype != PT_UNUSED) ? true : false; 403 403 404 bd_srv _init(&part->bd);405 part->bd .ops = &mbr_bd_ops;406 part->bd .arg = part;404 bd_srvs_init(&part->bds); 405 part->bds.ops = &mbr_bd_ops; 406 part->bds.sarg = part; 407 407 408 408 part->dsid = 0; … … 433 433 434 434 assert(part->present == true); 435 bd_conn(iid, icall, &part->bd );435 bd_conn(iid, icall, &part->bds); 436 436 } 437 437 438 438 /** Open device. */ 439 static int mbr_bd_open(bd_srv _t *bd)439 static int mbr_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 440 440 { 441 441 return EOK; -
uspace/srv/bd/rd/rd.c
r71b0d4d4 rb224a3e 68 68 static const size_t block_size = 512; 69 69 70 static int rd_open(bd_srv _t *);70 static int rd_open(bd_srvs_t *, bd_srv_t *); 71 71 static int rd_close(bd_srv_t *); 72 72 static int rd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); … … 93 93 }; 94 94 95 static bd_srv _t bd_srv;95 static bd_srvs_t bd_srvs; 96 96 97 97 static void rd_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg) 98 98 { 99 bd_conn(iid, icall, &bd_srv );99 bd_conn(iid, icall, &bd_srvs); 100 100 } 101 101 102 102 /** Open device. */ 103 static int rd_open(bd_srv _t *bd)103 static int rd_open(bd_srvs_t *bds, bd_srv_t *bd) 104 104 { 105 105 return EOK; … … 175 175 (void *) addr_phys, size); 176 176 177 bd_srv _init(&bd_srv);178 bd_srv .ops = &rd_bd_ops;177 bd_srvs_init(&bd_srvs); 178 bd_srvs.ops = &rd_bd_ops; 179 179 180 180 async_set_client_connection(rd_client_conn); -
uspace/srv/bd/sata_bd/sata_bd.c
r71b0d4d4 rb224a3e 57 57 static int disk_count; 58 58 59 static int sata_bd_open(bd_srv _t *);59 static int sata_bd_open(bd_srvs_t *, bd_srv_t *); 60 60 static int sata_bd_close(bd_srv_t *); 61 61 static int sata_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); … … 75 75 static sata_bd_dev_t *bd_srv_sata(bd_srv_t *bd) 76 76 { 77 return (sata_bd_dev_t *)bd-> arg;77 return (sata_bd_dev_t *)bd->srvs->sarg; 78 78 } 79 79 … … 104 104 ahci_get_num_blocks(disk[disk_count].sess, &disk[disk_count].blocks); 105 105 106 bd_srv _init(&disk[disk_count].bd);107 disk[disk_count].bd .ops = &sata_bd_ops;108 disk[disk_count].bd .arg = &disk[disk_count];106 bd_srvs_init(&disk[disk_count].bds); 107 disk[disk_count].bds.ops = &sata_bd_ops; 108 disk[disk_count].bds.sarg = &disk[disk_count]; 109 109 110 110 printf("Device %s - %s , blocks: %lu, block_size: %lu\n", … … 183 183 } 184 184 185 bd_conn(iid, icall, &disk[disk_id].bd );185 bd_conn(iid, icall, &disk[disk_id].bds); 186 186 } 187 187 188 188 /** Open device. */ 189 static int sata_bd_open(bd_srv _t *bd)189 static int sata_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 190 190 { 191 191 return EOK; -
uspace/srv/bd/sata_bd/sata_bd.h
r71b0d4d4 rb224a3e 58 58 size_t block_size; 59 59 /** Block device server structure */ 60 bd_srv _t bd;60 bd_srvs_t bds; 61 61 } sata_bd_dev_t; 62 62 -
uspace/srv/hid/console/console.c
r71b0d4d4 rb224a3e 383 383 384 384 fb_pointer_update(fb_sess, mouse.x, mouse.y, true); 385 } 386 387 static void cons_mouse_abs_move(sysarg_t x, sysarg_t y, 388 sysarg_t max_x, sysarg_t max_y) 389 { 390 if (max_x && max_y) { 391 mouse.x = limit(x * xres / max_x, 0, xres); 392 mouse.y = limit(y * yres / max_y, 0, yres); 393 394 fb_pointer_update(fb_sess, mouse.x, mouse.y, true); 395 } 385 396 } 386 397 … … 503 514 async_answer_0(callid, EOK); 504 515 break; 516 case INPUT_EVENT_ABS_MOVE: 517 cons_mouse_abs_move(IPC_GET_ARG1(call), IPC_GET_ARG2(call), 518 IPC_GET_ARG3(call), IPC_GET_ARG4(call)); 519 async_answer_0(callid, EOK); 520 break; 505 521 case INPUT_EVENT_BUTTON: 506 522 /* Got pointer button press/release event */ -
uspace/srv/hid/input/generic/input.c
r71b0d4d4 rb224a3e 189 189 } 190 190 async_exchange_end(exch); 191 } 192 193 /** Mouse pointer has moved in absolute mode. */ 194 void mouse_push_event_abs_move(mouse_dev_t *mdev, unsigned int x, unsigned int y, 195 unsigned int max_x, unsigned int max_y) 196 { 197 if (max_x && max_y) { 198 async_exch_t *exch = async_exchange_begin(client_sess); 199 async_msg_4(exch, INPUT_EVENT_ABS_MOVE, x, y, max_x, max_y); 200 async_exchange_end(exch); 201 } 191 202 } 192 203 -
uspace/srv/hid/input/include/mouse.h
r71b0d4d4 rb224a3e 63 63 extern void mouse_push_data(mouse_dev_t *, sysarg_t); 64 64 extern void mouse_push_event_move(mouse_dev_t *, int, int, int); 65 extern void mouse_push_event_abs_move(mouse_dev_t *, unsigned int, unsigned int, 66 unsigned int, unsigned int); 65 67 extern void mouse_push_event_button(mouse_dev_t *, int, int); 66 68 -
uspace/srv/hid/input/proto/mousedev.c
r71b0d4d4 rb224a3e 96 96 retval = EOK; 97 97 break; 98 case MOUSEEV_ABS_MOVE_EVENT: 99 mouse_push_event_abs_move(mousedev->mouse_dev, 100 IPC_GET_ARG1(call), IPC_GET_ARG2(call), 101 IPC_GET_ARG3(call), IPC_GET_ARG4(call)); 102 retval = EOK; 103 break; 98 104 case MOUSEEV_BUTTON_EVENT: 99 105 mouse_push_event_button(mousedev->mouse_dev,
Note:
See TracChangeset
for help on using the changeset viewer.