• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/ia64/kernel/

Lines Matching refs:data

56 static int salinfo_read(char *page, char **start, off_t off, int count, int *eof, void *data);
87 (2 * ARRAY_SIZE(salinfo_log_name)) + /* /proc/sal/mca/{event,data} */
90 /* Some records we get ourselves, some are accessed as saved data in buffers
101 * Write "read <cpunum>" to the data file.
102 * Write "clear <cpunum>" to the data file.
103 * Write "oemdata <cpunum> <offset> to the data file.
104 * Read from the data file.
105 * Close the data file.
113 * read data -> return EOF.
119 * write "oemdata <cpunum> <offset> -> format the oem data, goto OEMDATA.
120 * read data -> return the INIT/MCA/CMC/CPE record.
126 * write "oemdata <cpunum> <offset> -> format the oem data, goto OEMDATA.
127 * read data -> return the formatted oemdata.
130 * Closing the data file does not change the state. This allows shell scripts
131 * to manipulate salinfo data, each shell redirection opens the file, does one
146 u8 *oemdata; /* decoded oem data */
168 * Description: If user space asks for oem data to be decoded by the kernel
193 salinfo_work_to_do(struct salinfo_data *data)
195 (void)(down_trylock(&data->mutex) ?: 0);
196 up(&data->mutex);
207 shift1_data_saved (struct salinfo_data *data, int shift)
209 memcpy(data->data_saved+shift, data->data_saved+shift+1,
210 (ARRAY_SIZE(data->data_saved) - (shift+1)) * sizeof(data->data_saved[0]));
211 memset(data->data_saved + ARRAY_SIZE(data->data_saved) - 1, 0,
212 sizeof(data->data_saved[0]));
229 struct salinfo_data *data = salinfo_data + type;
233 int saved_size = ARRAY_SIZE(data->data_saved);
240 for (i = 0, data_saved = data->data_saved; i < saved_size; ++i, ++data_saved) {
245 if (!data->saved_num) {
246 shift1_data_saved(data, 0);
247 data_saved = data->data_saved + saved_size - 1;
258 cpu_set(smp_processor_id(), data->cpu_event);
260 salinfo_work_to_do(data);
271 salinfo_timeout_check(struct salinfo_data *data)
274 if (!data->open)
276 if (!cpus_empty(data->cpu_event)) {
278 salinfo_work_to_do(data);
306 struct salinfo_data *data = entry->data;
312 if (cpus_empty(data->cpu_event) && down_trylock(&data->mutex)) {
315 if (down_interruptible(&data->mutex))
319 n = data->cpu_check;
321 if (cpu_isset(n, data->cpu_event)) {
323 cpu_clear(n, data->cpu_event);
339 data->cpu_check = cpu;
340 if (++data->cpu_check == nr_cpu_ids)
341 data->cpu_check = 0;
363 struct salinfo_data *data = entry->data;
369 if (data->open) {
373 data->open = 1;
376 if (data->state == STATE_NO_DATA &&
377 !(data->log_buffer = vmalloc(ia64_sal_get_state_info_size(data->type)))) {
378 data->open = 0;
389 struct salinfo_data *data = entry->data;
391 if (data->state == STATE_NO_DATA) {
392 vfree(data->log_buffer);
393 vfree(data->oemdata);
394 data->log_buffer = NULL;
395 data->oemdata = NULL;
398 data->open = 0;
415 struct salinfo_data *data = context;
417 data->log_size = ia64_sal_get_state_info(data->type, (u64 *) data->log_buffer);
418 rh = (sal_log_record_header_t *)(data->log_buffer);
421 ia64_sal_clear_state_info(data->type);
425 salinfo_log_new_read(int cpu, struct salinfo_data *data)
430 int saved_size = ARRAY_SIZE(data->data_saved);
432 data->saved_num = 0;
435 for (i = 0, data_saved = data->data_saved; i < saved_size; ++i, ++data_saved) {
438 data->log_size = data_saved->size;
439 memcpy(data->log_buffer, rh, data->log_size);
442 data->saved_num = i+1;
446 shift1_data_saved(data, i);
452 if (!data->saved_num)
453 call_on_cpu(cpu, salinfo_log_read_cpu, data);
454 if (!data->log_size) {
455 data->state = STATE_NO_DATA;
456 cpu_clear(cpu, data->cpu_event);
458 data->state = STATE_LOG_RECORD;
467 struct salinfo_data *data = entry->data;
471 if (data->state == STATE_LOG_RECORD) {
472 buf = data->log_buffer;
473 bufsize = data->log_size;
474 } else if (data->state == STATE_OEMDATA) {
475 buf = data->oemdata;
476 bufsize = data->oemdata_size;
487 struct salinfo_data *data = context;
488 ia64_sal_clear_state_info(data->type);
492 salinfo_log_clear(struct salinfo_data *data, int cpu)
497 data->state = STATE_NO_DATA;
498 if (!cpu_isset(cpu, data->cpu_event)) {
502 cpu_clear(cpu, data->cpu_event);
503 if (data->saved_num) {
504 shift1_data_saved(data, data->saved_num - 1);
505 data->saved_num = 0;
508 rh = (sal_log_record_header_t *)(data->log_buffer);
511 call_on_cpu(cpu, salinfo_log_clear_cpu, data);
513 salinfo_log_new_read(cpu, data);
514 if (data->state == STATE_LOG_RECORD) {
516 cpu_set(cpu, data->cpu_event);
517 salinfo_work_to_do(data);
528 struct salinfo_data *data = entry->data;
541 salinfo_log_new_read(cpu, data);
544 if ((ret = salinfo_log_clear(data, cpu)))
547 if (data->state != STATE_LOG_RECORD && data->state != STATE_OEMDATA)
549 if (offset > data->log_size - sizeof(efi_guid_t))
551 data->state = STATE_OEMDATA;
554 .efi_guid = data->log_buffer + offset,
555 .oemdata = &data->oemdata,
556 .oemdata_size = &data->oemdata_size
562 data->oemdata_size = 0;
581 struct salinfo_data *data;
586 for (i = 0, data = salinfo_data;
588 ++i, ++data) {
589 cpu_set(cpu, data->cpu_event);
590 salinfo_work_to_do(data);
597 for (i = 0, data = salinfo_data;
599 ++i, ++data) {
602 for (j = ARRAY_SIZE(data->data_saved) - 1, data_saved = data->data_saved + j;
606 shift1_data_saved(data, j);
609 cpu_clear(cpu, data->cpu_event);
629 struct salinfo_data *data;
637 /* pass the feature bit in question as misc data */
643 data = salinfo_data + i;
644 data->type = i;
645 init_MUTEX(&data->mutex);
651 &salinfo_event_fops, data);
656 entry = proc_create_data("data", S_IRUSR | S_IWUSR, dir,
657 &salinfo_data_fops, data);
664 cpu_set(j, data->cpu_event);
682 * 'data' contains an integer that corresponds to the feature we're
686 salinfo_read(char *page, char **start, off_t off, int count, int *eof, void *data)
690 len = sprintf(page, (sal_platform_features & (unsigned long)data) ? "1\n" : "0\n");