ret = mutex_lock_interruptible(&wl->mutex); if (ret < 0) return -ERESTARTSYS;
/* Check if the fwlog is still valid */ if (wl->fwlog_size < 0) {
mutex_unlock(&wl->mutex); return 0;
}
/* Seeking is not supported - old logs are not kept. Disregard pos. */
len = min_t(size_t, count, wl->fwlog_size);
wl->fwlog_size -= len;
memcpy(buffer, wl->fwlog, len);
/* Make room for new messages */
memmove(wl->fwlog, wl->fwlog + len, wl->fwlog_size);
int wlcore_sysfs_init(struct wl1271 *wl)
{ int ret;
/* Create sysfs file to control bt coex state */
ret = device_create_file(wl->dev, &dev_attr_bt_coex_state); if (ret < 0) {
wl1271_error("failed to create sysfs file bt_coex_state"); goto out;
}
/* Create sysfs file to get HW PG version */
ret = device_create_file(wl->dev, &dev_attr_hw_pg_ver); if (ret < 0) {
wl1271_error("failed to create sysfs file hw_pg_ver"); goto out_bt_coex_state;
}
/* Create sysfs file for the FW log */
ret = device_create_bin_file(wl->dev, &fwlog_attr); if (ret < 0) {
wl1271_error("failed to create sysfs file fwlog"); goto out_hw_pg_ver;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.