Commit 9937fc682aaebb1075930b26e9c4c0be6c7e87a9
1 parent
1ed17e94b1
Exists in
master
부트로더 정보 추가
Showing
1 changed file
with
199 additions
and
0 deletions
Show diff stats
go/src/fullcycle/analog-kernel/parser/parse.go
| @@ -21,6 +21,15 @@ var parseFuncList = []func(chan string, chan jsonObject){ | @@ -21,6 +21,15 @@ var parseFuncList = []func(chan string, chan jsonObject){ | ||
| 21 | parseSlub, | 21 | parseSlub, |
| 22 | parsePidMax, | 22 | parsePidMax, |
| 23 | parseWorkingset, | 23 | parseWorkingset, |
| 24 | + parseBootloaderDram, | ||
| 25 | + parseBootloaderMmc, | ||
| 26 | + parseBootloaderConsole, | ||
| 27 | + parseBootloaderGadgetDriver, | ||
| 28 | + parseBootloaderSetupSize, | ||
| 29 | + parseBootloaderCpu, | ||
| 30 | + parseBootloaderBoard, | ||
| 31 | + parseBootloaderRstStat, | ||
| 32 | + parseBootloaderNet, | ||
| 24 | } | 33 | } |
| 25 | 34 | ||
| 26 | var reTimestamp = regexp.MustCompile(`^\[[[:blank:]]*[[:digit:]]+\.[[:digit:]]+[[:blank:]]*\]`) | 35 | var reTimestamp = regexp.MustCompile(`^\[[[:blank:]]*[[:digit:]]+\.[[:digit:]]+[[:blank:]]*\]`) |
| @@ -532,6 +541,196 @@ func parseWorkingset(lines chan string, chanOutput chan jsonObject) { | @@ -532,6 +541,196 @@ func parseWorkingset(lines chan string, chanOutput chan jsonObject) { | ||
| 532 | chanOutput <- m | 541 | chanOutput <- m |
| 533 | } | 542 | } |
| 534 | 543 | ||
| 544 | +func parseBootloaderDram(lines chan string, chanOutput chan jsonObject) { | ||
| 545 | + m := make(jsonObject) | ||
| 546 | + m["type"] = "bootloader_dram" | ||
| 547 | + m["value"] = "" | ||
| 548 | + | ||
| 549 | + rLine := regexp.MustCompile(`^DRAM:\s+([[:print:]]+)`) | ||
| 550 | + for line := range lines { | ||
| 551 | + if rLine.MatchString(line) { | ||
| 552 | + if sub := rLine.FindStringSubmatch(line); len(sub) > 1 { | ||
| 553 | + m["value"] = sub[1] | ||
| 554 | + break | ||
| 555 | + } | ||
| 556 | + } | ||
| 557 | + } | ||
| 558 | + | ||
| 559 | + chanOutput <- m | ||
| 560 | +} | ||
| 561 | + | ||
| 562 | +func parseBootloaderMmc(lines chan string, chanOutput chan jsonObject) { | ||
| 563 | + m := make(jsonObject) | ||
| 564 | + m["type"] = "bootloader_mmc" | ||
| 565 | + m["value"] = "" | ||
| 566 | + | ||
| 567 | + rLine := regexp.MustCompile(`^MMC:\s+([[:print:]]+)`) | ||
| 568 | + for line := range lines { | ||
| 569 | + if rLine.MatchString(line) { | ||
| 570 | + if sub := rLine.FindStringSubmatch(line); len(sub) > 1 { | ||
| 571 | + m["value"] = sub[1] | ||
| 572 | + break | ||
| 573 | + } | ||
| 574 | + } | ||
| 575 | + } | ||
| 576 | + | ||
| 577 | + chanOutput <- m | ||
| 578 | +} | ||
| 579 | + | ||
| 580 | +func parseBootloaderConsole(lines chan string, chanOutput chan jsonObject) { | ||
| 581 | + m := make(jsonObject) | ||
| 582 | + m["type"] = "bootloader_console" | ||
| 583 | + m["in"] = "" | ||
| 584 | + m["out"] = "" | ||
| 585 | + m["err"] = "" | ||
| 586 | + | ||
| 587 | + const ( | ||
| 588 | + FIND_IN = iota | ||
| 589 | + FIND_OUT | ||
| 590 | + FIND_ERR | ||
| 591 | + FIN | ||
| 592 | + ) | ||
| 593 | + | ||
| 594 | + state := FIND_IN | ||
| 595 | + | ||
| 596 | + rIn := regexp.MustCompile(`^In:\s+([[:print:]]+)`) | ||
| 597 | + rOut := regexp.MustCompile(`^Out:\s+([[:print:]]+)`) | ||
| 598 | + rErr := regexp.MustCompile(`^Err:\s+([[:print:]]+)`) | ||
| 599 | + for line := range lines { | ||
| 600 | + switch state { | ||
| 601 | + case FIND_IN: | ||
| 602 | + if sub := rIn.FindStringSubmatch(line); len(sub) > 1 { | ||
| 603 | + m["in"] = sub[1] | ||
| 604 | + state = FIND_OUT | ||
| 605 | + } | ||
| 606 | + case FIND_OUT: | ||
| 607 | + if sub := rOut.FindStringSubmatch(line); len(sub) > 1 { | ||
| 608 | + m["out"] = sub[1] | ||
| 609 | + state = FIND_ERR | ||
| 610 | + } | ||
| 611 | + case FIND_ERR: | ||
| 612 | + if sub := rErr.FindStringSubmatch(line); len(sub) > 1 { | ||
| 613 | + m["err"] = sub[1] | ||
| 614 | + state = FIN | ||
| 615 | + } | ||
| 616 | + } | ||
| 617 | + | ||
| 618 | + if state == FIN { | ||
| 619 | + break | ||
| 620 | + } | ||
| 621 | + } | ||
| 622 | + | ||
| 623 | + chanOutput <- m | ||
| 624 | +} | ||
| 625 | + | ||
| 626 | +func parseBootloaderGadgetDriver(lines chan string, chanOutput chan jsonObject) { | ||
| 627 | + m := make(jsonObject) | ||
| 628 | + m["type"] = "bootloader_gadget_driver" | ||
| 629 | + m["value"] = "" | ||
| 630 | + | ||
| 631 | + rLine := regexp.MustCompile(`^GADGET DRIVER:\s+([[:print:]]+)`) | ||
| 632 | + for line := range lines { | ||
| 633 | + if rLine.MatchString(line) { | ||
| 634 | + if sub := rLine.FindStringSubmatch(line); len(sub) > 1 { | ||
| 635 | + m["value"] = sub[1] | ||
| 636 | + break | ||
| 637 | + } | ||
| 638 | + } | ||
| 639 | + } | ||
| 640 | + | ||
| 641 | + chanOutput <- m | ||
| 642 | +} | ||
| 643 | + | ||
| 644 | +func parseBootloaderSetupSize(lines chan string, chanOutput chan jsonObject) { | ||
| 645 | + m := make(jsonObject) | ||
| 646 | + m["type"] = "bootloader_setup_size" | ||
| 647 | + m["value"] = "" | ||
| 648 | + | ||
| 649 | + rLine := regexp.MustCompile(`^Setup Size =\s+([[:print:]]+)`) | ||
| 650 | + for line := range lines { | ||
| 651 | + if rLine.MatchString(line) { | ||
| 652 | + if sub := rLine.FindStringSubmatch(line); len(sub) > 1 { | ||
| 653 | + m["value"] = sub[1] | ||
| 654 | + break | ||
| 655 | + } | ||
| 656 | + } | ||
| 657 | + } | ||
| 658 | + | ||
| 659 | + chanOutput <- m | ||
| 660 | +} | ||
| 661 | + | ||
| 662 | +func parseBootloaderCpu(lines chan string, chanOutput chan jsonObject) { | ||
| 663 | + m := make(jsonObject) | ||
| 664 | + m["type"] = "bootloader_cpu" | ||
| 665 | + m["value"] = "" | ||
| 666 | + | ||
| 667 | + rLine := regexp.MustCompile(`^CPU:\s+([[:print:]]+)`) | ||
| 668 | + for line := range lines { | ||
| 669 | + if rLine.MatchString(line) { | ||
| 670 | + if sub := rLine.FindStringSubmatch(line); len(sub) > 1 { | ||
| 671 | + m["value"] = sub[1] | ||
| 672 | + break | ||
| 673 | + } | ||
| 674 | + } | ||
| 675 | + } | ||
| 676 | + | ||
| 677 | + chanOutput <- m | ||
| 678 | +} | ||
| 679 | + | ||
| 680 | +func parseBootloaderBoard(lines chan string, chanOutput chan jsonObject) { | ||
| 681 | + m := make(jsonObject) | ||
| 682 | + m["type"] = "bootloader_board" | ||
| 683 | + m["value"] = "" | ||
| 684 | + | ||
| 685 | + rLine := regexp.MustCompile(`^Board:\s+([[:print:]]+)`) | ||
| 686 | + for line := range lines { | ||
| 687 | + if rLine.MatchString(line) { | ||
| 688 | + if sub := rLine.FindStringSubmatch(line); len(sub) > 1 { | ||
| 689 | + m["value"] = sub[1] | ||
| 690 | + break | ||
| 691 | + } | ||
| 692 | + } | ||
| 693 | + } | ||
| 694 | + | ||
| 695 | + chanOutput <- m | ||
| 696 | +} | ||
| 697 | + | ||
| 698 | +func parseBootloaderRstStat(lines chan string, chanOutput chan jsonObject) { | ||
| 699 | + m := make(jsonObject) | ||
| 700 | + m["type"] = "bootloader_rst_stat" | ||
| 701 | + m["value"] = "" | ||
| 702 | + | ||
| 703 | + rLine := regexp.MustCompile(`^rst_stat\s+:\s+([[:print:]]+)`) | ||
| 704 | + for line := range lines { | ||
| 705 | + if rLine.MatchString(line) { | ||
| 706 | + if sub := rLine.FindStringSubmatch(line); len(sub) > 1 { | ||
| 707 | + m["value"] = sub[1] | ||
| 708 | + break | ||
| 709 | + } | ||
| 710 | + } | ||
| 711 | + } | ||
| 712 | + | ||
| 713 | + chanOutput <- m | ||
| 714 | +} | ||
| 715 | + | ||
| 716 | +func parseBootloaderNet(lines chan string, chanOutput chan jsonObject) { | ||
| 717 | + m := make(jsonObject) | ||
| 718 | + m["type"] = "bootloader_net" | ||
| 719 | + m["value"] = "" | ||
| 720 | + | ||
| 721 | + rLine := regexp.MustCompile(`^Net:\s+([[:print:]]+)`) | ||
| 722 | + for line := range lines { | ||
| 723 | + if rLine.MatchString(line) { | ||
| 724 | + if sub := rLine.FindStringSubmatch(line); len(sub) > 1 { | ||
| 725 | + m["value"] = sub[1] | ||
| 726 | + break | ||
| 727 | + } | ||
| 728 | + } | ||
| 729 | + } | ||
| 730 | + | ||
| 731 | + chanOutput <- m | ||
| 732 | +} | ||
| 733 | + | ||
| 535 | func removeBrackets(s string) string { | 734 | func removeBrackets(s string) string { |
| 536 | for strings.HasPrefix(s, "(") && strings.HasSuffix(s, ")") { | 735 | for strings.HasPrefix(s, "(") && strings.HasSuffix(s, ")") { |
| 537 | openCount := strings.Count(s, "(") | 736 | openCount := strings.Count(s, "(") |