Ignore:
Timestamp:
2011-09-02T16:54:18Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f480d7e
Parents:
7a72ce1a (diff), 224c0e7 (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.
Message:

Merge basic infrastructure for anticipated device removal from
lp:~jsvoboda/helenos/devrem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbhid/kbd/kbddev.c

    r7a72ce1a ra1b7e80  
    734734        int rc = usb_kbd_create_function(hid_dev, kbd_dev);
    735735        if (rc != EOK) {
    736                 usb_kbd_free(&kbd_dev);
     736                usb_kbd_destroy(kbd_dev);
    737737                return rc;
    738738        }
     
    779779 * @param kbd_dev Pointer to the structure to be destroyed.
    780780 */
    781 void usb_kbd_free(usb_kbd_t **kbd_dev)
    782 {
    783         if (kbd_dev == NULL || *kbd_dev == NULL) {
     781void usb_kbd_destroy(usb_kbd_t *kbd_dev)
     782{
     783        if (kbd_dev == NULL) {
    784784                return;
    785785        }
    786786       
    787787        // hangup phone to the console
    788         async_obsolete_hangup((*kbd_dev)->console_phone);
    789        
    790         if ((*kbd_dev)->repeat_mtx != NULL) {
     788        async_obsolete_hangup(kbd_dev->console_phone);
     789       
     790        if (kbd_dev->repeat_mtx != NULL) {
    791791                //assert(!fibril_mutex_is_locked((*kbd_dev)->repeat_mtx));
    792792                // FIXME - the fibril_mutex_is_locked may not cause
    793793                // fibril scheduling
    794                 while (fibril_mutex_is_locked((*kbd_dev)->repeat_mtx)) {}
    795                 free((*kbd_dev)->repeat_mtx);
     794                while (fibril_mutex_is_locked(kbd_dev->repeat_mtx)) {}
     795                free(kbd_dev->repeat_mtx);
    796796        }
    797797       
    798798        // free all buffers
    799         if ((*kbd_dev)->keys != NULL) {
    800                 free((*kbd_dev)->keys);
    801         }
    802         if ((*kbd_dev)->keys_old != NULL) {
    803                 free((*kbd_dev)->keys_old);
    804         }
    805         if ((*kbd_dev)->led_data != NULL) {
    806                 free((*kbd_dev)->led_data);
    807         }
    808         if ((*kbd_dev)->led_path != NULL) {
    809                 usb_hid_report_path_free((*kbd_dev)->led_path);
    810         }
    811         if ((*kbd_dev)->output_buffer != NULL) {
    812                 usb_hid_report_output_free((*kbd_dev)->output_buffer);
    813         }
    814 
    815         free(*kbd_dev);
    816         *kbd_dev = NULL;
     799        if (kbd_dev->keys != NULL) {
     800                free(kbd_dev->keys);
     801        }
     802        if (kbd_dev->keys_old != NULL) {
     803                free(kbd_dev->keys_old);
     804        }
     805        if (kbd_dev->led_data != NULL) {
     806                free(kbd_dev->led_data);
     807        }
     808        if (kbd_dev->led_path != NULL) {
     809                usb_hid_report_path_free(kbd_dev->led_path);
     810        }
     811        if (kbd_dev->output_buffer != NULL) {
     812                usb_hid_report_output_free(kbd_dev->output_buffer);
     813        }
    817814}
    818815
     
    830827                        usb_kbd_mark_unusable(kbd_dev);
    831828                } else {
    832                         usb_kbd_free(&kbd_dev);
     829                        usb_kbd_destroy(kbd_dev);
    833830                }
    834831        }
Note: See TracChangeset for help on using the changeset viewer.