Printk
ಪ್ರಿಂಟ್ಕೆಯು ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಇಂಟರ್ಫೇಸ್ನ ಸಿ ಕಾರ್ಯವಾಗಿದ್ದು, ಇದು ಕರ್ನಲ್ ಲಾಗ್ಗೆ ಸಂದೇಶಗಳನ್ನು ಮುದ್ರಿಸುತ್ತದೆ. ಇದು ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಎಂಬ ಸ್ಟ್ರಿಂಗ್ ನಿಯತಾಂಕವನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ಇದು ಅನಿಯಂತ್ರಿತ ಸಂಖ್ಯೆಯ ವಿವಿಧ ಡೇಟಾ ಪ್ರಕಾರದ ನಿಯತಾಂಕಗಳನ್ನು (ಗಳನ್ನು) ಸ್ಟ್ರಿಂಗ್ನಲ್ಲಿ ನಿರೂಪಿಸುವ ವಿಧಾನವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. ನಂತರ ದಾರವನ್ನು ಕರ್ನಲ್ ಲಾಗ್ಗೆ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ. ಇದು ಪ್ರಿಂಟ್ಎಫ್ನಂತಹ ಅಮೂರ್ತತೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಅದರ ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಮತ್ತು ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳ ಪಾರ್ಸಿಂಗ್ ಪ್ರಿಂಟ್ಎಫ್ನಂತೆಯೇ ವರ್ತಿಸುತ್ತದೆ. ಕರ್ನಲ್ನಿಂದ ಸಂದೇಶಗಳನ್ನು ಲಾಗಿಂಗ್ ಮಾಡಲು ಈ ಕಾರ್ಯದ ಅಗತ್ಯವಿರುವ ಕರ್ನಲ್ ಪ್ರೋಗ್ರಾಮರ್ಗಳಿಗೆ ಇದು ಡೀಬಗ್ ಮಾಡುವ ಸಾಧನವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಪ್ರಿಂಟ್ಕೆ ಕಾರ್ಯದ ಮೂಲಮಾದರಿಯೆಂದರೆಃ ಇಂಟ್ ಪ್ರಿಂಟ್ಕೆ (ಕಾನ್ಸ್ಟ್ ಚಾರ್ * ಎಫ್ಎಮ್ಟಿ,.); ಸಿ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿ ಮತ್ತು ಅದರ ಪ್ರಿಂಟ್ಎಫ್ ಕಾರ್ಯವು ಕರ್ನಲ್ ಮೋಡ್ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ, ಆದ್ದರಿಂದ ಪ್ರಿಂಟ್ಕೆ ಅಗತ್ಯವಿರುತ್ತದೆ. ಪ್ರಿಂಟ್ ಎಫ್ ನಿಂದ ವ್ಯತ್ಯಾಸಗಳು ಪ್ರಿಂಟ್ ಕೆ ಕಾರ್ಯವು ಪ್ರಿಂಟ್ ಎಫ್ ಅನ್ನು ಆಧರಿಸಿದೆ, ಆದರೆ ಯಾವಾಗಲೂ ಪ್ರಿಂಟ್ ಎಫ್ ಅನ್ನು ಬಳಸುವ ರೀತಿಯಲ್ಲಿಯೇ ಬಳಸಲಾಗುವುದಿಲ್ಲ. ಲಾಗ್ ಲೆವೆಲ್ಸ್ ಪ್ರಿಂಟ್ಕೆಯು ಕರೆ ಮಾಡುವವರಿಗೆ ಕಳುಹಿಸಲಾಗುವ ಸಂದೇಶದ ಪ್ರಕಾರ ಮತ್ತು ಮಹತ್ವವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ನಿರ್ದಿಷ್ಟಕವನ್ನು ಲಾಗ್ ಮಟ್ಟ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಲಾಗ್ ಮಟ್ಟವು ಕರ್ನಲ್ ಸಂದೇಶ ಲಾಗ್ಗೆ ಕಳುಹಿಸಲಾಗುವ ಸಂದೇಶದ ಪ್ರಕಾರವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. ಲಾಗ್ ಮಟ್ಟವನ್ನು ಉತ್ಪಾದಿಸಬೇಕಾದ ಸಂದೇಶದ ಆರಂಭಕ್ಕೆ ಲಾಗ್ ಮಟ್ಟವನ್ನು ವಿವರಿಸುವ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪೂರ್ವಭಾವಿಯಾಗಿ (ಸಿ ನ ಸ್ಟ್ರಿಂಗ್ ಅಕ್ಷರಶಃ ಸಂಯೋಜನೆಯನ್ನು ಬಳಸಿಕೊಂಡು) ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಕೆಇಆರ್ಎನ್ _ ಐಎನ್ಎಫ್ಒನಲ್ಲಿ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಂದೇಶವನ್ನು ಉತ್ಪಾದಿಸಬಹುದುಃ ಪ್ರಿಂಟ್ಕೆ (ಕೆಇಆರ್ಎನ್ _ ಐಎನ್ಎಫ್ಓ "ಸಂದೇಶಃ% s\n", ಆರ್ಜಿ); ಲಾಗ್ ಮಟ್ಟವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸ್ಟ್ರಿಂಗ್ ಹೆಡರ್ ಅಕ್ಷರದ ಎಎಸ್ಸಿಐಐ ಆರಂಭವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ನಂತರ ಲಾಗ್ ಮಟ್ಟವನ್ನು ವಿವರಿಸುವ ಅಂಕಿಯನ್ನು ಅಥವಾ ಸಂದೇಶವು ಹಿಂದಿನ ಸಂದೇಶದ ಮುಂದುವರಿಕೆಯಾಗಿದೆ ಎಂದು ಸೂಚಿಸಲು 'ಸಿ' ಅಕ್ಷರವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಈ ಕೆಳಗಿನ ದಾಖಲೆಯ ಮಟ್ಟಗಳನ್ನು ಅವುಗಳ ವ್ಯಾಖ್ಯಾನಗಳೊಂದಿಗೆ ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ. ಲಾಗ್ ಮಟ್ಟವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದಿದ್ದಾಗ, ಡೀಫಾಲ್ಟ್ ಲಾಗ್ ಮಟ್ಟವು ಕೆರ್ನ್ _ ವಾರ್ನಿಂಗ್ ಆಗಿರುತ್ತದೆ, ಗೂಗಲ್ ವೆಲ್ = ಬೂಟ್ ವಾದದಂತಹ ಬೇರೆ ಡೀಫಾಲ್ಟ್ ಅನ್ನು ಕರ್ನಲ್ನಲ್ಲಿ ಹೊಂದಿಸದ ಹೊರತು. ಲಾಗ್ ಮಟ್ಟಗಳನ್ನು <ಲಿನಕ್ಸ್/ಕೆರ್ನ್ _ ಲೆವೆಲ್ಸ್. ಎಚ್> ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಯಾವ ಲಾಗ್ ಮಟ್ಟಗಳನ್ನು ಮುದ್ರಿಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು sysctl ಕಡತ/reproc/sys/kernel/ಪ್ರಿಂಟ್ಕನ್ನು ಬಳಸಿ ಸಂರಚಿಸಲಾಗುತ್ತದೆ. ಪಾಯಿಂಟರ್ ಫಾರ್ಮ್ಯಾಟ್ಗಳು% p ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಪೆಸಿಫೈಯರ್ ಅನ್ನು (ಪ್ರಿಂಟ್ಎಫ್ನಲ್ಲಿ ಪಾಯಿಂಟರ್ಗಳನ್ನು ಮುದ್ರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ) ಹೆಚ್ಚುವರಿ ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ವಿಧಾನಗಳನ್ನು ಸೇರಿಸಲು ವಿಸ್ತರಿಸಲಾಗಿದೆ, ಉದಾಹರಣೆಗೆ,% pISPc ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಟ್ರಕ್ಟ್ ಸಾಕಡ್ಡರ್ * ಅನ್ನು ಮುದ್ರಿಸಲು ವಿನಂತಿಸುವುದರಿಂದ IPv4/v6 ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್ ಅನ್ನು ಮಾನವ-ಸ್ನೇಹಿ ಸ್ವರೂಪದಲ್ಲಿ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ. "1.2.3.4:12345" ಅಥವಾ "[1:2:3:4:5:6:7:8]: 12345"). ಯಾವುದೇ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಬೆಂಬಲವಿಲ್ಲ, ಆದರೆ ಪ್ರಿಂಟ್ಎಫ್ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಸಂಖ್ಯೆಗಳ ಔಟ್ಪುಟ್ ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಕರ್ನಲ್ನೊಳಗೆ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಸಂಖ್ಯೆಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ. ವಿವರಣೆ ಸಿಸ್ಟಮ್ ಕನ್ಸೋಲ್ಗೆ ಪ್ರವೇಶವನ್ನು ನಿಯಂತ್ರಿಸುವ ಸೆಮಾಫೋರ್ ಅನ್ನು ಲಾಕ್ ಮಾಡಲು ಕಾರ್ಯವು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಅದು ಯಶಸ್ವಿಯಾದರೆ, ಔಟ್ಪುಟ್ ಅನ್ನು ಲಾಗ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಕನ್ಸೋಲ್ ಚಾಲಕರಿಗೆ ಕರೆ ಮಾಡಲಾಗುತ್ತದೆ. ಸೆಮಾಫೋರ್ ಅನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ ಔಟ್ಪುಟ್ ಅನ್ನು ಲಾಗ್ ಬಫರ್ನಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಕನ್ಸೋಲ್ ಸೆಮಾಫೋರ್ನ ಪ್ರಸ್ತುತ ಧಾರಕನು ಕನ್ಸೋಲ್ ಸೆಮಾಫೋರ್ ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡುವಾಗ ಹೊಸ ಔಟ್ಪುಟ್ ಅನ್ನು ಗಮನಿಸುತ್ತಾನೆ ಮತ್ತು ಸೆಮಾಫೋರ್ ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡುವ ಮೊದಲು ಬಫರ್ ಮಾಡಲಾದ ಔಟ್ಪುಟ್ ಅನ್ನು ಕನ್ಸೋಲ್ಗೆ ಕಳುಹಿಸುತ್ತಾನೆ. ಈ ಮುಂದೂಡಲ್ಪಟ್ಟ ಮುದ್ರಣದ ಒಂದು ಪರಿಣಾಮವೆಂದರೆ ಪ್ರಿಂಟ್ ಕೆ ಅನ್ನು ಕರೆದು ನಂತರ ಮುದ್ರಿಸಬೇಕಾದ ಲಾಗ್ ಮಟ್ಟವನ್ನು ಬದಲಾಯಿಸುವ ಕೋಡ್ ಮುರಿಯಬಹುದು. ಏಕೆಂದರೆ ನಿಜವಾದ ಮುದ್ರಣವು ಸಂಭವಿಸಿದಾಗ ಮುದ್ರಿಸಬೇಕಾದ ಲಾಗ್ ಮಟ್ಟವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ. ಸಿಸ್ಟಮ್ ಕನ್ಸೋಲ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸದಿದ್ದಾಗ, ಕರ್ನಲ್ ಬೂಟ್ ಪ್ರಕ್ರಿಯೆಯ ಆರಂಭಿಕ ಹಂತಗಳನ್ನು ಹೊರತುಪಡಿಸಿ, ಪ್ರಿಂಟ್ಕ್ ಕಾರ್ಯವನ್ನು ಕರ್ನಲ್ನಲ್ಲಿ ಎಲ್ಲಿಂದಲಾದರೂ ಕರೆಯಬಹುದು. ಪರ್ಯಾಯ ಕಾರ್ಯವಾದ ಅರ್ಲಿ _ ಪ್ರಿಂಟ್ಕನ್ನು ಕೆಲವು ವಿನ್ಯಾಸಗಳಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ ಮತ್ತು ಬೂಟ್ ಪ್ರಕ್ರಿಯೆಯ ಆರಂಭಿಕ ಹಂತಗಳಲ್ಲಿ ಪ್ರಿಂಟ್ಕ್ ಮಾಡಲು ಒಂದೇ ರೀತಿ ಬಳಸಲಾಗುತ್ತದೆ. ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಫಾರ್ಮ್ಯಾಟ್ ರೆಫರೆನ್ಸ್ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ APIಗಳು